目录
一、环境安装
1.安装CMake
2.安装编译器
(1)visual studio
3.自动化构建工具
(1)visual studio
(2)Ninja
二、hello world
1.编写cpp文件
2.编写CMakeLists.txt文件
3.项目配置
(1)切换生成器
4.编译可执行文件
5.操作目标文件
官网:Download | CMake
编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。一个现代编译器的主要工作流程:源代码 (source code) →预处理器(preprocessor) → 编译器 (compiler) →目标代码(object code) →链接器(Linker) → 可执行程序(executables)。
visual studio编译器是cl.exe 。
自动化构建工具为项目提供构建和链接的基础设施,最终会安装和使用什么,很大程度上取决 于操作系统:
GNU Make是一个控制计算机程序从代码源文件到可执行文件或其他非源文件生成过程的工具。
MSBuild是Microsoft Build Engine的缩写,它是Visual Studio中将源代码编译为程序的构建引擎,它为开发者提供自动化构建、性能测试和程序打包功能。
Ninja是一个不错的自动化构建工具,适用于GNU/Linux、macOS和Windows。官网:Ninja, a small build system with a focus on speed (ninja-build.org)
将单个源文件编译为可执行文件。
//helloworld.cpp
#include
#include
#include
int main()
{
std::cout<<"hello world"<
使用CMake提供项目配置描述。我们把CMake指令放入一个名为 CMakeLists.txt 的文件中,将CMakeLists.txt与helloworld.cpp放在同一个目录,CMake指令等文档可参考CMake Reference Documentation — CMake 3.22.1 Documentation
注意CMakeLists.txt的名称要写对(注意大小写), 这样CMake才能够解析。
//设置CMake所需的最低版本。如果使用的CMake版本低于该版本,则会发出致命错误
cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
//声明了项目的名称( chapter01 )和支持的编程语言(CXX代表C++)
project(chapter01 LANGUAGES CXX)
//指示CMake创建一个新目标:可执行文件helloworldexe
add_executable(helloworldexe helloworld.cpp)
1.CMake语言不区分大小写,但是参数区分大小写。
2.LANGUAGES支持的语言包括C、CXX(即C++)、CUDA、Fortran和ASM。 默认情况下,如果未给出语言选项,则启用C和CXX。 指定语言NONE,或使用LANGUAGES关键字并列出无语言,以跳过启用任何语言。不过,我们还是建议使用 LANGUAGES 选项 在 project 命令中显式地声明项目的语言。
创建并进入build文件夹,输入cmake .. 命令
build文件夹可生成以下文件:
cmake --help 命令可以列出可用的生成器列表(安装后才可用):
用 -G 可以切换生成器,举个例子:我电脑默认的CMake生成器是VS2019,我想使用VS 2017,那么可以使用以下命令:
cmake -G "Visual Studio 15 2017 Win64" ..
注意:要使用双引号将Visual Studio 15 2017 Win64引起来,否则会出错:
构建项目,输入cmake --build. 命令:
此时,Debug目录如下:
helloworldexe.exe可执行文件是在当前项目中的唯一目标,可以使用 cmake --build . --target
举个例子:删除所有生成的文件后,Debug目录为空。