xmake对于个人项目来说,构建比cmake简单太多,少折腾太多
但在我之前测试的时候,发现xmake链接glfw库的时候会出链接错误
这个问题是xmake在获取包时,倾向使用静态的库
这就导致部分包在链接时会无法解析符号之类的问题
(有些包反过来,使用静态库会无法解析符号,这次的例子也有)
至于为什么,我目前也不是很清楚
总之,打开xmake.lua
add_rules("mode.debug", "mode.release")
add_requires("glad")
add_requires("glfw3", {configs = {shared = true}})
target("XmakeTest")
set_kind("binary")
set_languages("cxx17")
set_warnings("all")
add_packages("glad")
add_packages("glfw3")
add_files("src/*.cpp")
set_toolchains("clang")
别的不重要,关键是这两句add_requires()
对于glad,xmake默认会使用静态库,并且经过测试,使用动态库会报错
对于glfw3,通过{configs = {shared = true}},指定使用动态库
这样之后,编译就不会找不到符号了
下面做一些进阶一些的开发,经典做imgui的开发
测试代码在之前这篇博客有写
不过xmake.lua还是有点坑的,这里贴一下
add_rules("mode.debug", "mode.release")
add_requires("fmt")
add_requires("glad")
add_requires("glfw3", {configs = {shared = true}})
add_requires("vcpkg::imgui",{
configs = {
features = {
"opengl3-binding",
"glfw-binding",
"docking-experimental"
},
shared = true
}
})
target("XmakeTest")
set_kind("binary")
set_languages("cxx17")
set_warnings("all")
add_packages("fmt")
add_packages("glad")
add_packages("glfw3")
add_packages("vcpkg::imgui")
add_files("src/*.cpp")
set_toolchains("clang")
使用vcpkg来获取imgui库,然后通过清单指定特性,还要指定动态库
一切正常的话结果应该是这样的