使用 CMake 构建C++项目便于跨平台开发,在Linux上可以生成 makefile ,并通过 make来进行编译。在Windows上可以生成 .sln
项目,并结合VS继续进行开发,或 MSVC 编译器来直接将项目编译成目标文件。
1、 创建 .cpp
文件,以编译成exe程序
#include <iostream>
int main()
{
printf("hello word");
std::cin.get();
return 0;
}
2、创建 CMakeLists.txt
文件
cmake_minimum_required(VERSION 3.18)
# 设置项目的名称
project(testDemo)
# 设置将mian.cpp文件编译成 testDemo 程序
add_executable(${PROJECT_NAME} main.cpp)
3、构建并编译对应的项目
在Windows平台上,一般结合VS编译器来将该项目编译成对应的可执行文件,有两种做法:(1)将项目构建生成VS的sln
项目,然后通过VS来打开该项目进行编译。(2)不用VS来打开对应的项目,cmake 直接通过调用 msbuild 来进行编译该项目。
1)、cmake
构建.sln
项目
# 首先进入到 .cpp 和CMakeLists.txt文件所在目录
mkdir build # 创建build目录用于存放CMake 所生成的文件
cd build
cmake .. # 将在build目录下生成对应的sln项目
目录结构,及以上命令会生成的VS项目如下图所示
【注意】cmake ..
生成VS解决方案,是根据本机安装的VS默认版本。如果本机安装有多个VS,此时想要生成某个指定VS版本的解决方案,就需要在生成解决方案时指定VS的版本,如生成 VS2019对应的解决方案:cmake .. -G "Visual Studio 16 2019"
,如下图将以指定的版本进行生成
2)、通过VS来打开 .sln
编译成可执行文件
3)、如果不需要VS来打开项目编译,可以直接使用如下命令:cmake --build .
,将会生成对应的可执行程序,如下图:
cmake
生成的 ALL_BUILD、ZERO_CHECK
ALL_BUILD
:只要编译这个工程,所有的工程均会编译;
ZERO_CHECK
: 监视CMakeLists.txt文件的变化,一旦发生变化,它会告诉编译器重新构建整个工程环境;