1 引言
linux中进行C/C++开发,一般都是先用编辑器写好代码,然后使用gcc工具来编译程序。
文件数量不多的工程,可以直接敲gcc命令进行编译。对于文件较多的工程,就要使用Makefile来管理代码的编译了。
而手动编写Makefile其实也是具有一定的难度的,更方便的方式是使用更易编写CMake来自动生成Makefile。
2 Linux中安装CMake
这里插一句,在Window系统中,许多人也用过CMake,它可以配合集成开发环境如Visual Studio,通过图形化的操作界面,操作CMake图形界面进行代码的编译。
本篇介绍的,在Linux中使用CMake,还用不到图形界面,仍然是文本编辑的方式使用CMake。
CMake在Linux的安装,直接使用命令安装即可:
sudo apt install cmake
安装完成之后可以查看cmake的版本,我用的是3.10.2
3 编译单个文件的CMake基础示例
3.1 编写C源文件
首先写一个最简单的hello word程序,hello.c:
#include int main(void) { printf("Hello World\n"); return 0; }
3.2 编写CMakeLists.txt
然后在相同目录下编写CMakeLists.txt:
cmake_minimum_required (VERSION 2.8) project (hello) add_executable(hello hello.c)
这是一个最基础的CMake使用模板,这3行的含义如下:
第一行:要求cmake的最低版本为2.8
第二行:工程名
第三行:生成的可执行文件名为hello,使用的源文件为hello.c
注:以上3条,add_executable起主要作用,前两条去掉也可以运行
3.3 执行cmake指令生成Makefile
然后输入以下命令运行cmake,从而帮我们自动生成makefile文件:
cmake .
这个“点”表示是当前目录搜索源文件。
cmake指令的执行结果如下:
可以看下CMake生成的makefile文件,相比较自己手写的makefile,这个自动生成的makefile,内容很多:
3.4 执行make指令编译代码
makefile文件产生之后,就可以使用make指令来编译源代码了:
make
执行make指令之后,可以看到生成了可执行文件hello,运行这个hello文件,就可以看到程序的输出了:
4 总结
本篇介绍了Liunx中如何使用CMake来生成makefile,进行进行源程序的编译。
将上述的CMake编译单个源文件的使用操作总结为一张图:
编写CMake主要就是编写CMakeLists.txt,基础模板为:
cmake_minimum_required (VERSION 2.8) project (hello) add_executable(hello hello.c)
其中最主要的一句就是:
add_executable(hello hello.c)
审核编辑:刘清
-
Linux
+关注
关注
87文章
11369浏览量
211063 -
gcc编译器
+关注
关注
0文章
78浏览量
3472
发布评论请先 登录
相关推荐
Linux中的用户与创建

Linux文件查找
Linux根文件系统的挂载过程
linux--sysfs文件系统

百问网全志D1h开发板LVGL9移植详细教程
刚刚装好esp32 elipse CMAKE编译环境,hello word编译不通过怎么解决?
VSCode中编译过程cmake错误的原因?
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-如何移植NCNN?
飞凌嵌入式ElfBoard ELF 1板卡-如何移植NCNN
STM32CubeMX如何在*.c源文件中使用c++特性?
1-宽输入范围降压SWIFT™转换器TPS5410数据表

评论