构建目标和属性
project
project(<项目名称> [<编程语言>...])
project(<项目名称>
[VERSION <主版本号>[.<次版本号>[.<补丁版本号>[.<修订版本号>]]]]
[DESCRIPTION <项目描述>]
[HOMEPAGE_URL] <项目主页URL>
[LANGUAGES <编程语言>...])
当无须声明各种属性时,第一种形式最简便,编程语言参数支持C、CXX、CUDA、OBJC、OBJCXX、Fortran、HIP、ISPC和ASM。
add_executable
add_executable(<目标名称> [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] [<源文件>...])
该命令创建一个可执行文件类型的构建目标,其中第一个参数是必选参数,目标名称并不一定是最终的可执行文件的名称,因可通过OUTPUT_NAME目标属性来修改。源文件可暂时省略,可通过target_source命令设置源程序。
add_library
add_library(<目标名称> <库类型> [EXCLUDE_FROM_ALL] [<源文件>...])
该命令会创建一个静态库|动态库|模块库类型的构建目标,<库类型>对应取值STATIC|SHARED|MODULE。
add_library(<目标名称> OBJECT [<源文件>...])
该命令会创建一个目标文件库的构建目标,该命令仅编译其包含的源文件,生成一系列的目标文件,并不会将这些目标文件打包或链接到某个库文件中。
include_directories
include_directories([AFTER|BEFORE] [SYSTEM] <目录>...)
该命令仅对当前目录及其子目录中的构建目标生效,用于将<目录>设置为构建目标的头文件搜索目录
target_include_directories
target_include_directories(<构建目标>
[SYSTEM] [AFTER|BEFORE] <PRIVATE|INTERFACE|PUBLIC> <目录> ...
[<PRIVATE|INTERFACE|PUBLIC> <目录>...]...)
该命令用于将<目录>加入到<构建目标>的头文件搜索目录列表中
target_link_directories
target_link_directories(<构建目标> [BEFORE]
<PRIVATE|INTERFACE|PUBLIC> <目录>...
[<PRIVATE|INTERFACE|PUBLIC> <目录>...]...)
该命令用于将<目录>设置为<构建目标>的链接库搜索目录
target_sources
target_sources(<构建目标>
<PRIVATE|INTERFACE|PUBLIC> <源文件>...
[<PRIVATE|INTERFACE|PUBLIC> <源文件>...]...)
该命令用于设置构建目标所需的源文件
指定源文件方式
aux_source_directory
aux_source_directory(<目录> <结果变量>)
该命令用于遍历指定目录中的源文件,并将它们的路径存入结果变量中。若增添源文件,使用该命令不会引起CMakeLists.txt改变,可能不会重新构建。
add_subdirectory
add_subdirectory(<源文件目录> [<二进制目录>] [EXECLUDE_FROM_ALL])
该命令用于将源文件目录这个子目录加入项目,该子目录中必须含有一个CMake目录程序,当CMake执行该命令时,会立即进入子目录执行这个目录程序,当前目录程序的执行会暂停。
message
显示信息
message([STATUS|WARNING|AUTHOR_WARNING|FATAL_ERROR|SEND_ERROR] "message内容")
option
用于定义布尔型选项,可以在构建项目时启用或禁用特定的功能
# option_variable:选项变量的名称
# description:选项的描述
# initial_value:选项的初始值,通常是ON或OFF
option(<option_variable> "description" <initial_value>)
以是否启用日志功能为例:
option(ENABLE_LOGGING "Enable logging functionality" ON)
在CMakeLists.txt中可以通过if语句来使用这个选项:
if(ENABLE_LOGGING)
# 这个函数会定义一个宏,在代码中可以判断该宏
add_definitions(-DENABLE_LOGGING)
endif()
在使用CMake命令构建项目时可在命令行来启用或禁用option
cmake -DENABLE_LOGGING=OFF ..
CMake常用模块
find_package
用来寻找引用的外部库,包括头文件路径、链接库路径等。但是想要通过该命令寻找到库,需要库作者能提供XXXConfig.cmake
和FindXXX.cmake
配置文件。
# 以寻找googletest库为例
# REQUIRED参数表名如果没找到就不会向下执行
find_package(GTest REQUIRED)
include_directories(${GTest_INCLUDE_DIRS})
target_link_libraries(exec_name ${GTest_LIBS})
标签:...,CMake,target,directories,命令,add,构建,使用
From: https://www.cnblogs.com/songlh424/p/18441628