跳到主要内容

CMake 基础语法

cmake 很简单,但绝对没有听起来或者想象中那么简单。cmake 编写的过程实际上是编程的过程,跟以前使用 autotools 一样,不过你需要编写的是 CMakeLists.txt(每个目录一个),使用的是 “cmake 语言和语法”。

cmake_minimum_required(VERSION 3.0)

project(HELLO VERSION 0.0.1)

add_executable(hello main.cpp)
target_link_libraries

CMake 语法规则

前面提到过,cmake 其实仍然要使用 “cmake 语言和语法” 去构建,上面的内容就是所谓的 “cmake 语言和语法” ,最简单的语法规则是:

  • 变量使用 ${} 方式取值,但是在 IF 控制语句中是直接使用变量名。

  • 指令(参数 1 参数 2...)

    参数使用括弧括起,参数之间使用空格或分号分开。 以上面的 ADD_EXECUTABLE 指令为例,如果存在另外一个 func.c 源文件,就要写成:

    ADD_EXECUTABLE(hello main.c func.c)

    或者

    ADD_EXECUTABLE(hello main.c;func.c)
  • 指令是大小写无关的,参数和变量是大小写相关的。但,推荐你全部使用大写指令。

  • 上面的 MESSAGE 指令我们已经用到了这条规则:

    MESSAGE(STATUS "This is BINARY dir" ${HELLO_BINARY_DIR})

    也可以写成:

    MESSAGE(STATUS "This is BINARY dir ${HELLO_BINARY_DIR}")

这里需要特别解释的是作为工程名的 HELLO 和生成的可执行文件 hello 是没有任何关系的。 hello 定义了可执行文件的文件名,你完全可以写成:

ADD_EXECUTABLE(t1 main.c)

编译后会生成一个 t1 可执行文件。