最简单的例子
目录结构
.
├── CMakeLists.txt
└── main.cpp
main.cpp
#include <iostream>
int main()
{
std::cout <<"Hello World" << std::endl;
return 0;
}
CMakeLists.txt
PROJECT (SimpleExample)
SET(SRC_LIST main.cpp)
MESSAGE(STATUS "This is BINARY dir "${
PRACTISE1_BINARY_DIR})
MESSAGE(STATUS "This is BINARY dir "${
PROJECT_BINARY_DIR})
MESSAGE(STATUS "This is SOURCE dir "${
PRACTISE1_SOURCE_DIR})
MESSAGE(STATUS "This is SOURCE dir "${
PROJECT_SOURCE_DIR})
ADD_EXECUTABLE(example ${
SRC_LIST})
语法介绍
大小写
CMAKE语法中的指令关键字不分大小写,但是传入的参数是分大小写的, 如果传入的参数是列表可以用空格或者分号隔开, 参数也可以使用双引号传入(处理带有空格字符的参数的时候很有用)
PROJECT
PROJECT用来设置工程名字,可以与后面ADD_EXECUTABLE中的目标文件名不一样。
SET
SET用来定义一个变量,如果定义的是列表可以用空格或者分号隔开,定义的变量可以在后面用${变量名}来进行取值。
MESSAGE
MESSAGE用来打印日志,分别有SEND_ERROR | STATUS | FATAL_ERROR三中类型,其中FATAL_ERROR会让构建程序终止。
General messages
message([<mode>] "message text" ...)
Reporting checks
message(<checkState> "message text" ...)
ADD_EXECUTABLE
ADD_EXECUTABLE根据设置生成指定的可执行文件。
常用变量
使用${
}进行变量的引用。在 IF 等语句中,是直接使用变量名而不通过${
}取值。
默认变量${
PROJECT_BINARY_DIR}指的是目标make文件的生成目录。
默认变量${
PROJECT_SOURCE_DIR}指的是工程CMakeLists.txt所在目录。
<工程名>_BINARY_DIR和<工程名>_SOURCE_DIR是 PROJECT 指令隐式定义的两个变量, 等同于PROJECT_BINARY_DIR和PROJECT_SOURCE_DIR,一般推荐使用后面这两个,因为工程名会变动。
cmake之后如果运行make命令会发现目标文件生成在${
PROJECT_BINARY_DIR}