Hello CMake: 最常用的 CMAKE 用法
CMake
CMake是个一个开源的跨平台自动化建构系统,用来管理软件建置的程序,并不依赖于某特定编译器,并可支持多层目录、多个应用程序与多个库。 它用配置文件控制建构过程(build process)的方式和Unix的make相似,只是CMake的配置文件取名为CMakeLists.txt。CMake并不直接建构出最终的软件,而是产生标准的建构档(如Unix的Makefile或Windows Visual C++的projects/workspaces),然后再依一般的建构方式使用。
在Linux上,CMake
通过 CMakeLists.txt
用相较 Makefile
更简单的语法生成 Makefile
,之后使用 make
命令进行编译,make install
命令进行安装。
Make
工具除了 CMake 还有个比较好用的的管理 QT 工程的叫做 qmake
,qmake
在学习的难度上相较 CMake
要小的多,并且有轻量级的IDE QT Creator
可以方便进行管理,关于 qmake
的使用,我会在后续的博客更新中讲解。
下面我来为大家介绍下我们在使用 CMake 时最常用的管理方式。
个人如何在 linux 使用 CMake 管理工程
一般没有针对CMake的IDE,我们可以纯手敲,它有点儿像是在写代码,稍微容易点。我通常使用 VSCode
或者ATOM
等编译器,直接打开工程的根目录,然后便可以看到文件夹下的源代码文件,并且还可以比较简单美观的写代码。
内部构建和外部构建,选择哪个?
cmake 在执行时,会生产大量临时文件,如果直接在代码根目录执行cmake .
命令,相信会看到比代码本身更多的临时文件。
外部构建,通过在源文件夹外创建一个新的用于放置编译中间文件的文件夹,所有生成的工程管理临时文件、编译临时文件、编译最终生成文件都在该文件夹中。 一般情况下外部构建的操作如下:
mkdir build # 创建一个新文件夹
cd ./build # 进入该文件夹路径
cmake .. # 构建工程管理临时文件
make # 编译
make install # 安装编译好的工程到指定路径
git
来讲,可以直接在.gitignore
文件中加入一行build/
以屏蔽对 build 文件夹的版本控制。build 文件夹内生成的文件如下图所示。