1 cmake简介
cmake 是一个跨平台的自动构建工具,cmake允许开发者编写一种与平台无关的 CMakeLists.txt 文件来制定整个工程的编译流程,再根据具体的编译平台,生成本地化的 Makefile 和工程文件,最后执行 make 编译。
make 工具依赖于 Makefile 文件,通过 Makefile 文件来定义整个工程的编译规则,使用 make 工具来解析 Makefile 所 定义的编译规则。
2 CMakeLists.txt 单个源文件编写
2.1 创建CMakeLists.txt 文件,并在文件中输入命令:
project(HELLO) // project 命令用于设置工程的名称,括号中的参数 HELLO 便是我们要设置的工程名称
add_executable(hello ./main.c) // add_executable 同样也是一个命令,用于生成一个可执行文件
//表示需要生成一个名为 hello 的可执行文件,所需源文件为当前目录下的 main.c。
2.2 CMakeLists.txt 文件写入完成之后,保存退出
2.3 在当前工程目录下创建一个 build 目录:
2.4 然后进入到 build 目录下执行 cmake:
cd build/
cmake ../
make
cmake 后面携带的路径“ ../ ”指定了 CMakeLists.txt 文件的所在路径
2.5 运行可执行文件:./hello
这样 cmake 生成的中间文件以及 make 编译生成的可执行文件就全部在 build 目录下了,如果要清理工程,直接删除 build 目录即可,这样就方便多了。
3 CMakeLists.txt 多个源文件编写
3.1 创建CMakeLists.txt 文件,并在文件中输入命令:
project(HELLO)
set(SRC_LIST main.c hello.c) //定义了一个 SRC_LIST 变量,SRC_LIST 变量是一个源文件列表,记录生成可执行文件 hello 所需的源文件 main.c 和 hello.c
add_executable(hello ${SRC_LIST})
set 命令用于设置变量,如果变量不存在则创建 该变量并设置它,而在 add_executable 命令中引用了该变量;当然我们也可以不去定义 SRC_LIST 变量,直接将源文件列表写在 add_executable 命令中,如:add_executable(hello main.c hello.c)
3.2 CMakeLists.txt 文件写入完成之后,保存退出
3.3 在当前工程目录下创建一个 build 目录:
3.4 然后进入到 build 目录下执行 cmake:
cd build/
cmake ../
make
cmake 后面携带的路径“ ../ ”指定了 CMakeLists.txt 文件的所在路径
3.5 运行可执行文件:./hello
这样 cmake 生成的中间文件以及 make 编译生成的可执行文件hello 就全部在 build 目录下了,如果要清理工程,直接删除 build 目录即可,这样就方便多了。
所生成文件及源文件的目录结构:
4 部分常用命令
cmake 提 供 了 很 多 命 令 , 每 一 个 命 令 都 有 它 自 己 的 功 能 、 作 用 , 通 过 这 个 链 接 地 址 https://cmake.org/cmake/help/v3.5/manual/cmake-commands.7.html 可以查询到所有的命令及其相应的介绍、使用方法等等
5 部分常用变量
变量也是 cmake 中的一个重头戏,cmake 提供了很多内置变量,每一个变量都有它自己的含义,通过这 个链接地址 https://cmake.org/cmake/help/v3.5/manual/cmake-variables.7.html 可以查询到所有的内置变量及其 相应的介绍