# 设置cmake最低版本
cmake_minimum_required(VERSION 3.2)
# project命令用于指定cmake工程的名称,实际上,它还可以指定cmake工程的版本号(VERSION关键字)、
#简短的描述(DESCRIPTION关键字)、主页URL(HOMEPAGE_URL关键字)
#和编译工程使用的语言(LANGUAGES关键字)
# project(<PROJECT-NAME> [<language-name>...])
# ${PROJECT_NAME}:本CMakeLists.txt的project名称
**project(xxx)**
# project(<PROJECT-NAME> [VERSION <major>[.<minor>[.<patch>[.<tweak>]]]]
#[DESCRIPTION <project-description-string>][HOMEPAGE_URL <url-string>]
#[LANGUAGES <language-name>...])
project(mytest VERSION 1.2.3.4)
project (mytest HOMEPAGE_URL “https://www.XXX(示例).com”)
# 获取路径下所有的.cpp/.c/.cc文件(不包括子目录),并赋值给变量中
**aux_source_directory(路径 变量)**
# 设置变量,给文件名/路径名或其他字符串起别名,用${变量}获取变量内容
**set(变量 文件名/路径/...)**
# 打印消息
**message(消息)**
STATUS:输出一条普通状态消息(默认类型,如果省略类型则默认为 STATUS)。
WARNING:输出一条警告消息。
AUTHOR_WARNING:输出一条给构建系统维护者的警告消息。
FATAL_ERROR:输出一条错误消息并停止 CMake 配置过程。
SEND_ERROR:与 FATAL_ERROR 相同,输出一条错误消息并停止 CMake 配置过程。
例子:
# 输出一条普通状态消息
message("This is a status message.")
# 输出一条警告消息
message(WARNING "This is a warning message.")
# 编译子文件夹的CMakeLists.txt
**add_subdirectory(子文件夹名称)**
# 将.cpp/.c/.cc文件生成.a静态库
# 注意,库文件名称通常为libxxx.so,在这里只要写xxx即可
**add_library(库文件名称 STATIC 文件)**
例子:add_library(mylib STATIC src/lib.cpp src/lib2.cpp)//创建一个名为 mylib 的静态库,包含 src/lib.cpp 和 src/lib2.cpp 这两个源文件
add_library(mysharedlib SHARED src/lib.cpp src/lib2.cpp)//创建一个名为 mysharedlib 的动态库
# 将.cpp/.c/.cc文件生成可执行文件
**add_executable(可执行文件名称 文件)**
# 规定.h头文件路径
**include_directories(路径)**
#函数获取指定组件的文件名,并将其保存到变量中
**get_filename_component(<variable> <component> <path> [BASE_DIR <base-dir>] [NAME_WE <name-we>])**
<variable>:用于存储提取的组件的变量名。
<component>:要提取的组件类型,如 DIRECTORY、NAME、EXT 等。
<path>:要处理的文件路径。
DIRECTORY:提取路径中的目录部分。
NAME:提取路径中的文件名(包括扩展名)。
EXT:提取路径中的文件扩展名。
NAME_WE:提取路径中的文件名(不包括扩展名)。
ABS_PATH:提取路径的绝对路径。
例子:
get_filename_component(MY_DIR "${MY_PATH}" DIRECTORY)//MY_DIR 会存储 MY_PATH 的目录部分
get_filename_component(MY_NAME "${MY_PATH}" NAME) //MY_NAME 会存储文件名(包括扩展名)
#用于向目标(如库或可执行文件)添加编译选项
**add_compile_options(<option>...)**
例子:target_compile_options(my_target PRIVATE -Wall -Wextra -Werror)
**option(<name> "help string describing <name>" [initial value])**
用于定义一个可以在配置时由用户设置的选项。这个选项可以是一个布尔值(ON 或 OFF)
例子:option(MY_OPTION "Enable some feature in my project" ON)
MY_OPTION 是一个选项,它的描述是 "Enable some feature in my project",并且它的默认值是 ON
#用于文件搜索的命令,它会根据给定的模式匹配文件,并将匹配到的文件列表赋值给一个变量
**file(GLOB ...)**
例子:file(GLOB sources "src/*.cpp") //使用 GLOB 收集当前目录下的所有 .cpp 文件
CMakeLists常用命令
最新推荐文章于 2024-07-14 19:46:27 发布