作用: 帮助查找工程依赖的包(lib、so)文件。
两种模式均为在指定路径下查找指定类型cmake文件来查找依赖的包,差异为两模式的查找路径不同。
MODULE模式下
CMake在 CMAKE_MODULE_PATH
路径及CMake安装路径 下,通过查找名为Find
的文件来查找包文件。
CONFIG模式下
CMake在特定的 cmake变量(如CMAKE_PREFIX_PATH、CMAKE_FRAMEWORK_PATH)指定的路径及系统环境变量PATH指定的路径 下,通过查找名为
或者
的文件来查找包文件。
查找后,cmake定义
、
、
等变量来保存包的查找状态。
FIND_PACKAGE(Qt6 6.3.1 COMPONENTS Widgets REQUIRED)
参考资料:cmake(7):find_package命令详解
make install
指令安装时运行的规则,可以用来安装目标二进制、动态库、静态库以及文件、目录、脚本等。本质是将对应文件复制到指定目录。${CMAKE_INSTALL_INCLUDEDIR}/abc/
目录下install(FILES include/ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/abc/")
make install
指令用于运行install
命令指定的安装内容。参考资料:【CMake】cmake的install指令
参数解析:
–build : 指定项目二进制树所在的路径
. : 表示当前路径
作用: cmake --build .
效果与make
等价,但可以自动识别适配当前平台的生成器,无需手动指定采用mingw32-make还是Nmake,常用于跨平台脚本中。
注:其用于cmake ..
命令之后。
参考资料:
1、请问怎么理解cmake --build . 这句话?
2、CMake 官方文档解释
作用: 用来指明软件/库安装路径前缀,以供find_package()
,find_program()
,find_library()
,find_file()
和find_path()
命令搜索使用,这样就方便搜索可执行文件、头文件及库文件等。
用法:
CMAKE_PREFIX_PATH是一个分号分隔的路径列表:
list(APPEND CMAKE_PREFIX_PATH "D:\Qt\6.3.1\mingw_64") # 安装路径前缀
cmake -DCMAKE_PREFIX_PATH=D:\Qt\6.3.1\mingw_64
注: 添加了后,find_package()
等命令会自动搜索安装路径下bin, lib, include等子目录
参考资料:
1、CMake | 将路径添加到 CMAKE_PREFIX_PATH
2、CMAKE_PREFIX_PATH官方文档
作用: 都用来设置编译选项,差异为add_compile_options针对所有编译器(包括c和c++编译器),CMAKE_CXX_FLAGS只针对C++编译器。
用法:
add_compile_options(-Wall -Wextra -pedantic -Werror)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
参考资料:
1、add_compile_options和CMAKE_CXX_FLAGS的区别
作用: 在指定域中设置/获取一个命名属性,具体见cmake命令之set_property和get_property。
用法:
if()
elseif() # 可选,且可重复
else([condition]) # 可选
endif([condition])
注: else
与endif
后括号中的condition
可写可不写,不作为判断条件,但若写只能与if
中的一致。
参考资料:
1、Cmake中的条件判断if/elseif/else
作用: 将一个文件拷贝到指定目录,并匹配文件中特定字段,用当前值修改其值,具体见:CMake官方文档