Linux C应用编程:CMake编译

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 可以查询到所有的内置变量及其 相应的介绍

  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值