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动态库需...
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...
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_library(<name> [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] [...]) add_library可以创建很多类型的库,我们这里使用STATIC关键字表明创建的是一个静态库。静态库需要编译的源文件就是add和mul目录里面的cpp文件。 我们知道,源文件在编译的时候需要做预处理,这一步就需要访问include的头文件。我们怎么...
ADD_LIBRARY(hello_static STATIC ${LIBHELLO_SRC}) #对hello_static的重名为hello SET_TARGET_PROPERTIES(hello_static PROPERTIES OUTPUT_NAME "hello") # cmake 在构建一个新的target 时,会尝试清理掉其他使用这个名字的库,如果没有清理还是会只会构建一个动态库,不会构建出静态库 ...
static_library ) 第三行add_library 创建一个static_library的静态库,源文件为Hello.c 第六行当需要使用static_library静态库创建可执行文件时,需要使用target_link_libraries添加库文件。 编译 $mkdirbuild $ cd build/ $ cmake .. $ make 测试 build目录下会出现libstatic_library.a文件 ...
add_library CMake 还提供了一些其他的库类型,例如共享库(.so 或 .dll)、模块库(.mod)和对象库(.o)。可以根据实际需求选择适当的库类型。在 CMake 中,你可以使用 add_library() 命令来添加不同类型的库 # 添加静态库 add_library(MyStaticLib STATIC src/MyStaticLib.cpp) ...
在CMake中,add_library命令的基本语法如下: add_library(<name> <SHARED|STATIC|MODULE|INTERFACE> [source1] [source2 ...]) 其中,是你要创建的库的名称,用于指定库的类型。你可以选择的类型包括SHARED(共享库,Shared Libraries)、STATIC(静态库,Static Libraries)、MODULE(模块库,Module Libraries)或INTERFACE(...
1.1. add_library 添加一个lib到工程中,指定这个lib的源文件 函数定义 add_library(<name> [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] source1 [source2 ...]) <name>是目标库的名字,这个名字在工程内全局唯一,最终编译出来的目标文件名字取决于目标平台(比如说lib<name>.a或<name>.lib) ...