CMakeLists.txt语法(一)
一.简介
CMakeLists.txt 文件是用于描述 CMake 构建过程和项目配置的文件。
二.demo
简单CMakeLists.txt语法如下所示:
PROJECT(test C)
SET(SRC_LIST test.c)
MESSAGE(STATUS "This is BANARY DIR:" ${PROJECT_BINARY_DIR})
MESSAGE(STATUS "This is PROJECT SOURCE DIR:" ${PROJECT_SOURCE_DIR})
ADD_EXECUTABLE(testNew ${SRC_LIST})
三.语法详细解析
(1)PROJECT(projectname [CXX] [C] [Java])
作用:定义工程名字,并指定工程支持的语言,支持语言列表可忽略(默认支持所有语言)
隐式定义了两个cmake变量:
_BINARY_DIR:即编译路径,例如/home/a/testdir/build
_SOURCE_DIR:即工程所在的路径 ,例如/home/a/testdir
(2)SET(VAR [VAUE])
作用:显示的定义变量,多个变量之间使用空格
使用变量时要使用:${VAR}
(3)MESSAGE指令: 编译过程输出信息
语法:
MESSAGE([SEND_ERROR | STATUS| FATAL_ERROR] “message to display”)
参数:
SEND_ERROR:产生错,生成过程被跳过
STATUS:生成前缀为–的信息
FATAL_ERROR:立即终止所有的cmake过程
(4)ADD_EXECUTABLE(testNew ${SRC_LIST})
定义工程生成一个文件名位testNew的可执行文件。
四.外部构建方法
(1)创建build目录,进入build目录 执行 cmake . .(注意:. .代表父目录,父目录中存在需要的CMakeLists.txt)
即 cmake <工程的全路径>
build目录下生成了编译需要的Makefile以及其他的中间文件。
(2)运行make,生成可执行文件testNew
外部构建的好处:对于原有的工程没有任何影响,所有的动作发生在编译目录build。
PROJECT_SOURCE_DIR:即程路径 /home/a/testdir
PROJECT_BINARY_DIR:即编译路径 /home/a/testdir/build