CMake 构建 C++ 项目

使用 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文件的变化,一旦发生变化,它会告诉编译器重新构建整个工程环境;

posted @ 2024-08-13 19:51  Jeffxue  阅读(50)  评论(0编辑  收藏  举报