使用CMAKE构建应用程序

本文仅介绍如何使用CMAKE编译一个现有的程序(适用于非交叉编译)。

关于CMAKE

CMake是个一个开源的跨平台自动化建构系统,用来管理软件建置的程序,并不依赖于某特定编译器,并可支持多层目录、多个应用程序与多个库。 它用配置文件控制建构过程(build process)的方式和Unix的make相似,只是CMake的配置文件取名为CMakeLists.txt。CMake并不直接建构出最终的软件,而是产生标准的建构档(如Unix的Makefile或Windows Visual C++的projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是CMake和SCons等其他类似系统的区别之处。 CMake配置文件(CMakeLists.txt)可设置源代码或目标程序库的路径、产生适配器(wrapper)、还可以用任意的顺序建构可执行文件。CMake支持in-place建构(二进档和源代码在同一个目录树中)和out-of-place建构(二进档在别的目录里),因此可以很容易从同一个源代码目录树中建构出多个二进档。CMake也支持静态与动态程序库的建构。

https://zh.wikipedia.org/zh-cn/CMake

CMAKE 下载与版本

下载地址: https://cmake.org/download/

请注意,在Windows平台上使用CMAKE版本必须大于最小版本请参见下表

Visual Studio版本CMAKE 最小版本
Visual Studio 20193.14
Visual Studio 20173.7.2
Visual Studio 2017 (可指定工具链版本)3.12
Visual Studio 20153.1

CMAKE的GUI

Windows版本已包含GUI,Linux系统需要另外安装,请参照各Linux发型版的安装方法。以下方法仅适用于Ubuntu

sudo apt install cmake-qt-gui

配置一个应用程序

当使用CMAKE配置程序时请注意编译目录尽量不要与源代码目录相同。

CMAKE GUI配置程序

注意:以下配置项通常需要在Configure之前完成。

配置项含义
CMAKE_PREFIX_PATHCMAKE 搜索目录
CMAKE_INSTALL_PREFIXCMAKE安装目录
CMAKE_DEBUG_POSTFIX生成调试用可执行文件的后缀
CMAKE_GENERATOR_TOOLSETCMAKE工具链版本
CMAKE_SYSTEM_NAME系统名称,通常用于交叉编译

生成并编译源代码

配置完成后按Generate生成编译项目,确保没有错误后便可编译生成应用程序。

Visual Studio的情况

打开Visual Studio 本机命令行(x64或x86)并切换到编译目录执行以下命令

Release版本

msbuild /p:Configuration=Release ALL_BUILD.vcxproj

Debug版本

msbuild /p:Configuration=Debug ALL_BUILD.vcxproj

Linux的情况

make -j `nproc`

安装

Visual Studio的情况

Release版本

 msbuild /p:Configuration=Release INSTALL.vcxproj 

Debug版本

 msbuild /p:Configuration=Debug INSTALL.vcxproj 

Linux的情况

make install

参考文献