add_library(<name> <SHARED|STATIC|MODULE|OBJECT|UNKNOWN> IMPORTED [GLOBAL]) 这种用法直接导入已经生成的库,cmake不会给这类library添加编译规则。 这种用法的关键在于添加变量IMPORTED。 另外,GLOBAL可用于设置这个library为全局可见。 常规和imported的library的属性不同: 常规的library,其属性以INTERFACE_开头 impor...
add_library中的第二个参数 STATIC 表示是静态库,如果不加STATIC的话比如 add_library(xlog xlog.cpp) 就是默认编译动态库,如果要编译静态库再通过cmake的预制变量来控制。 STATIC 替换为SHARED 就是指定编译为动态库,例如:add_library(xlog SHARED xlog.cpp) 。 如果是Linux动态库代码不需要调整,Windows动态库需...
STATIC:生成静态库 SHARED:生成动态库 EXCLUDE_FROM_ALL:add_library, add_executable, add_subdirectory等命令都有一个EXCLUDE_FROM_ALL参数. 作用就是如果某个target或subdirectory被设置为EXCLUDE_FROM_ALL属性, 那么这个target(或这个subdirectory中的所有target)就会被排除在all target列表之外,这样,当执行默认的make...
add_executable(test_app main.cpp $<TARGET_OBJECTS:test_library>) add_library(anotherlib STATIC other.cpp $<TARGET_OBJECTS:test_library>) 1. 2. 3. test_library并没有被实际生成,使用test_library的目标文件的 生成表达式作为 参数放在add_library或者add_executable放源 代码的位置,而不能放在target_lin...
add_library(mylibSTATICmysource.cpp)其中,`mysource.cpp`是你的源文件,`STATIC`关键字表示我们要...
ADD_LIBRARY(hello_static STATIC ${LIBHELLO_SRC}) #对hello_static的重名为hello SET_TARGET_PROPERTIES(hello_static PROPERTIES OUTPUT_NAME "hello") # cmake 在构建一个新的target 时,会尝试清理掉其他使用这个名字的库,如果没有清理还是会只会构建一个动态库,不会构建出静态库 ...
静态库与动态库的生成 add_library(xxx_object OBJECT xxx.cpp) set_target_properties(xxx_object PROPERTIES POSITION_INDEPENDENT_CODE ON) add_library(xxx_library STATIC $<TARGET_OBJECTS:xxx_object>…
add_library CMake 还提供了一些其他的库类型,例如共享库(.so 或 .dll)、模块库(.mod)和对象库(.o)。可以根据实际需求选择适当的库类型。在 CMake 中,你可以使用 add_library() 命令来添加不同类型的库 # 添加静态库 add_library(MyStaticLib STATIC src/MyStaticLib.cpp) ...
cmakelists中add_library指令 cmakelists中的add_library指令是用来创建静态或动态库的命令。它的常用语法是:add_library(name[STATIC|SHARED|MODULE]sources),其中name是库的名称,[STATIC | SHARED | MODULE]表示要创建的库的类型,sources是库的源文件。 在cmakelists中使用add_library指令可以很方便地创建库文件,...
add_library(<name><SHARED|STATIC|MODULE|UNKNOWN>IMPORTED[GLOBAL]) 一个Imported Lib目标代表一个工程外部的库文件,当前这个工程内灭有命令来编译这个库,并且这个库的IMPORT属性是true。 没有设置GLOBAL的时候,这个目标名称的作用域只在创建它的目录以及子目录;设置了之后,全局可见。