cmake

cmake

官方教程地址

https://modern-cmake-cn.github.io/Modern-CMake-zh_CN/chapters/intro/running.html

生成Makefile的工具。需要攥写的是CMakeLists.txt。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
add_executable(one two.cpp three.h)     	生成一个one可执行文件
add_library(one STATIC two.cpp three.h) 生成一个库
STATIC,SHARED, 或者MODULE、BUILD_SHARED_LIBS
target_include_directories(one PUBLIC include) 添加包含目录,public,任何链接到这个目标的库都必须包含这个目录,PRIVATE 只影响当前,不影响依赖。INTERFACE,之影响依赖。
target_link_libraries(another PUBLIC one) 指定目标another。
set(MY_VARIABLE "value") 声明本地变量 变量名全部大写 变量值跟在后面 声明后,只能在它的作用域内访问这个变量。可以在 变量声明末尾加PARENT_SCOPE来将它的作用域置定为当前的上一级作用域。

set(MY_CACHE_VARIABLE "VALUE" CACHE STRING "" FORCE)
mark_as_advanced(MY_CACHE_VARIABLE)
将缓存的变量作为临时的全局变量

set(ENV{variable_name} value) 和 $ENV{variable_name} 设置/获取环境变量
CmakeCache.txt是缓存。当运行Cmake构建目录的时候会创建它。

set_property(TARGET TargetName PROPERTY CXX_STANDARD 11) 设置属性
get_property(ResultVariable TARGET TargetName PROPERTY CXX_STANDARD) 获取属性

if(variable)
else()
endif()

function()
xxx
endfunction()



记得在任何使用目标的地方都指定关键字PUBLIC PRIVATE INTERFACE,那么就不会有问题

debug命令

1
2
--trace 选项能够打印出运行的 CMake 的每一行。
CMake 3.7 添加了 --trace-source="filename" 选项,这让你可以打印出你想看的特定文件运行时执行的每一行。