我试图在一个与一个真正不知名的人战斗项目中链接CMake编译时错误。
该项目使用以下CMake文件构建自己的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")在主CMakeLists文件中引用Lua来编译结果二进制文件:
list(APPEND SMDATA_LINK_LIB
"lua-5.1"
...brevity
)
...brevity
target_link_libraries("${SM_EXE_NAME}" ${SMDATA_LINK_LIB})还有一些其他库,我可以链接到它们(比如libpng、libjpeg等),但是我希望Lua被静态编译成最终的二进制文件,这样它就不会依赖于任何系统Lua了。
如何修改CMakeLists以静态地将Lua库编译为二进制文件?
发布于 2016-02-11 22:54:14
通常,您只需告诉CMake静态编译库:
add_library("lua-5.1" ${LUA_SRC} ${LUA_HPP})变成了
add_library("lua-5.1" STATIC ${LUA_SRC} ${LUA_HPP})https://stackoverflow.com/questions/35349164
复制相似问题