本文仅介绍如何使用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 2019 | 3.14 |
Visual Studio 2017 | 3.7.2 |
Visual Studio 2017 (可指定工具链版本) | 3.12 |
Visual Studio 2015 | 3.1 |
CMAKE的GUI
Windows版本已包含GUI,Linux系统需要另外安装,请参照各Linux发型版的安装方法。以下方法仅适用于Ubuntu
sudo apt install cmake-qt-gui
配置一个应用程序
当使用CMAKE配置程序时请注意编译目录尽量不要与源代码目录相同。
注意:以下配置项通常需要在Configure之前完成。
配置项 | 含义 |
---|---|
CMAKE_PREFIX_PATH | CMAKE 搜索目录 |
CMAKE_INSTALL_PREFIX | CMAKE安装目录 |
CMAKE_DEBUG_POSTFIX | 生成调试用可执行文件的后缀 |
CMAKE_GENERATOR_TOOLSET | CMAKE工具链版本 |
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