将库静态编译成二进制文件?

时间:2016-02-11 20:13:42

标签: cmake

我在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库静态编译为我的二进制文件?

1 个答案:

答案 0 :(得分:0)

通常你可以告诉CMake静态编译库:

add_library("lua-5.1" ${LUA_SRC} ${LUA_HPP})

变为

add_library("lua-5.1" STATIC ${LUA_SRC} ${LUA_HPP})