我在CMake项目中尝试fight a really obscure编译时错误。
该项目使用the following CMake file构建自己的Lua:
static_assert(detect<foo, const_ham>::value, "!");
static_assert(!detect<bar, const_ham>::value, "!");
在the main CMakeLists file中引用了Lua来编译生成的二进制文件:
set(LUA_SRC
"lua-5.1/src/lapi.c"
...brevity
)
set(LUA_HPP
"lua-5.1/src/lapi.h"
...brevity
)
source_group("" FILES ${LUA_SRC})
source_group("" FILES ${LUA_HPP})
add_library("lua-5.1" ${LUA_SRC} ${LUA_HPP})
set_property(TARGET "lua-5.1" PROPERTY FOLDER "External Libraries")
# include_directories(src)
if(MSVC)
sm_add_compile_definition("lua-5.1" _CRT_SECURE_NO_WARNINGS)
endif(MSVC)
disable_project_warnings("lua-5.1")
还有其他几个 链接到我可以使用的库(比如libpng,libjpeg等),但是我希望Lua能够< em>静态编译成最终的二进制文件,以便它不依赖于任何系统Lua。
如何修改CMakeLists以将Lua库静态编译为我的二进制文件?
答案 0 :(得分:0)
通常你可以告诉CMake静态编译库:
add_library("lua-5.1" ${LUA_SRC} ${LUA_HPP})
变为
add_library("lua-5.1" STATIC ${LUA_SRC} ${LUA_HPP})