网上的一些cmake教程都是一开始就要介绍一大堆cmake命令,然后再介绍如何写。像我这样的急性子,还没看完命令介绍,就想把页面关了。所以这里我按我自己的学习过程,看能不能整理一个小教程。
关于cmake是啥我就不介绍了,能在网上搜索cmake的一般都大概知道它是干啥的,今天的文章就来写一个cmake版的hello world。
首先我们准备基本的开发环境(假定你用的是windows系统):
- 安装msys2,http://www.msys2.org/
- 安装必要的开发工具
pacman -S gcc
pacman -S cmake
PS:因为我们要学习的是开源工具,在windows系统下想把开源世界里的工具用好,最好用我给你准备的这个环境。虽然cmake也支持VS,但我不太推荐使用,没有原因。
假设我们已经有了一个main.c,现在想把它编成一个可执行程序,我们看看这个cmake怎么写。
开始写cmake的hello world:
- 先在你的main.c目录下新建一个
CMakeLists.txt
文件(文件的名字大小写无所谓的,不过一般用cmake的项目都是这样写的)。 - 打开这个文件,输入:
add_executable(myapp
main.c)
- 打开msys2,并切到你的程序目录下,执行:
cmake .
cmake --build .
- 不出意外的话,你会编出来一个myapp.exe来。
这里咱们就用到一个cmake的命令:
- add_executable 编译一个可执行的程序。一般的用法就是咱们写的这样,第一个是要编译出来的可执行程序的名字,后面跟着所有源文件,如果你有2个以上的源文件,可以写成:
add_executable(myapp
other.c
main.c)
编译完成后,你会看到你的根目录下生成了一大堆乱七八糟的东西,一般的项目都会将这些生成的东西单独放在一个文件夹里,所以我们可以把上面的第三步改成这样:
mkdir build
cd build
cmake ..
cmake --build .
这样所有生成的文件就都放在build目录下了,你自己的目录则是非常的干净了。
done.
PS 附赠一个同样的Makefile,可以自己对比一下:
myapp: main.c
gcc main.c -o myapp