CMake中add_library与IMPORTED的详细解释 add_library在CMake中的基本用法: add_library是CMake中的一个命令,用于添加一个库目标到项目中。这个库可以是静态库(.a或.lib),动态库(.so、.dll或.dylib),或者是模块库(特定于某些构建系统)。基本语法如下: cmake add_library(<name> [<STATIC|SHARED...
add_library(<name> <SHARED|STATIC|MODULE|OBJECT|UNKNOWN> IMPORTED [GLOBAL]) 这种用法直接导入已经生成的库,cmake不会给这类library添加编译规则。 这种用法的关键在于添加变量IMPORTED。 另外,GLOBAL可用于设置这个library为全局可见。 常规和imported的library的属性不同: 常规的library,其属性以INTERFACE_开头 impor...
这里分别举了一个add_library和add_executable的例子,分别通过IMPORTED选项创建了gRPC::grpc++和gRPC::grpc_cpp_plugin这两个cmake对象,它们分别对应了xxx/lib/libgrpc++.so和xxx/bin/grpc_cpp_plugin两个文件,那么它们是怎么联系到一起的呢?继续看xxx/lib/cmake/grpc目录中的gRPCTargets-release.cmake这个文件中...
add_library(lib_name [STATIC | SHARED | OBJECT] IMPORTED [IMPORTED_LOCATION]) 这种方式用于导入一个预先构建好的库,而非使用源代码构建库。需要指定库的类型(STATIC、SHARED或OBJECT)以及它的位置。 在定义库目标之后,你可以使用target_link_libraries命令将其链接到可执行目标或其他库目标。同时,也可以使用set...
add_library(<name> <SHARED|STATIC|MODULE|OBJECT|UNKNOWN> IMPORTED [GLOBAL]) 1. 2. 这种用法可以直接导入已经生成的库,cmake不会给这类library添加编译规则。 这种用法的关键在于添加变量IMPORTED。 另外,GLOBAL可用于设置这个library为全局可见。 imported的library,其属性以IMPORTED_开头,导入库的几个重要属性如下...
EXCLUDE_FROM_ALL:add_library, add_executable, add_subdirectory等命令都有一个EXCLUDE_FROM_ALL参数. 作用就是如果某个target或subdirectory被设置为EXCLUDE_FROM_ALL属性, 那么这个target(或这个subdirectory中的所有target)就会被排除在all target列表之外,这样,当执行默认的make时,这个target(或这个subdirectory中的所...
INTERFACE_INCLUDE_DIRECTORIES "/path/to/mylibrary/headers" ) # 静态链接 add_library(MyLibrary STATIC IMPORTED) set_target_properties(MyLibrary PROPERTIES IMPORTED_LOCATION "/path/to/mylibrary.lib" # Windows # 或者 # IMPORTED_LOCATION "/path/to/mylibrary.a" # Linux ...
add_library( hello_shared SHARED ${libhello_src}) add_library( hello_static STATIC ${libhello_src}) # 按照一般的习惯,静态库名字跟动态库名字应该是一致的,只是扩展名不同; #即:静态库名为 libhello.a; 动态库名为libhello.so ; # 所以,希望 "hello_static" 在输出时,不是"hello_static",而是...
IMPORTED_LOCATION_RELEASE ${CMAKE_CURRENT_SOURCE_DIR}/libbar.a IMPORTED_LOCATION_DEBUG ${CMAKE_CURRENT_SOURCE_DIR}/libbard.a IMPORTED_LINK_INTERFACE_LIBRARIES baz) # <-- dependency is here 注意动态库和静态库稍有区别: add_library(bar SHARED IMPORTED) ...
IMPORTED_LOCATION_RELEASE ${CMAKE_CURRENT_SOURCE_DIR}/libbar.a IMPORTED_LOCATION_DEBUG ${CMAKE_CURRENT_SOURCE_DIR}/libbard.a IMPORTED_LINK_INTERFACE_LIBRARIES baz) # <-- dependency is here 注意动态库和静态库稍有区别: add_library(bar SHARED IMPORTED) ...