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中的所...
add_library(<name> OBJECT [...]) 1. 这种形式类型固定为OBJECT,以这种方式,只编译source列表的文件,但不将生成的目标文件打包或者链接为库,而是在其他add_library()或者add_executable()生成目标的时候,可以使用形如$<TARGET_OBJECTS:objlib>的表达式将对象库作为源引入。 3.2.2 示例代码 使用方式: add_librar...
这里分别举了一个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 指令详细可见下文 CMake 语法。 外部编译过程: 进入build,运行 cmake … 在build 目录下,运行 make 命令编译Makefile文件,并生成动态库。 CMake 同时构建静态库与动态库 生成动态库与静态库 有上面的例子可以看出,使用 ADD_LIBRARY 指令就可以同时构建静态和动态库: ...
project (xlog) add_library(xlog STATIC xlog.cpp) add_executable(test_xlog test_xlog.cpp) # 指定加载的库 target_link_libraries(test_xlog xlog) 再次运行 cmake -S . -B build cmake --build build 就编译出静态库和导入静态库的测试程序。
add_definitions添加宏定义。 add_dependencies添加target的依赖。 add_executable添加构建二进制执行。 add_library添加构建lib库。 add_subdirectory添加构建的二级目录,一般在top的CMakeLists.txt中使用,用于将其他CMakeLists.txt包含进build工程,使用相对目录。
cmake add_library编译链接静态库cmakelists 本篇文章我们来编写CMakeLists.txt使用cmake的add_library的构建静态库,并使用target_link_libraries链接指定的静态库。 cmake的linux windows 和linux环境的准备可以我看前面的文章: 一、 代码准备 为了项目更简单点,我这边把静态库和配置和链接静态库的配置放在一个C...
add_library(<name>OBJECT<src>...) 创建一个特殊的“object library” 目标。这种库只编译源文件生成目标文件,但是不把这些目标文件打包进一个lib。当其他的库或者目标文件要使用这些目标文件的时候,会以这样的形式来添加,objlib是这个库的名字 add_library(...$<TARGET_OBJECTS:objlib>...)add_executable(.....
CMAKE_LIBRARY_PATH:环境变量; CMAKE_CURRENT_SOURCE_DIR:当前处理的CMakeLists.txt文件所在路径; CMAKE_CURRENT_BINARY_DIR:target编译目录; 使用ADD_SURDIRECTORY指令可以更改该变量的值; SET(EXECUTABLE_OUTPUT_PATH < dir >) 指令不会对该变量有影响,但改变了最终目标文件的存储路径; ...