Windows上如何使用CMake构建项目

1. 编译器安装

推荐使用MSYS2,windows平台下载地址:MSYS2

pacman基本命令:

1
2
3
4
5
pacman -Sy # 更新软件包数据
pacman -Syu # 更新所有
pacman -Ss <package_name> # 查询package信息
pacman -S <package_name> # 安装package
pacman -R <package_name> # 卸载package

安装编译工具链:

安装gcc/g++:

1
pacman -S mingw-w64-x86_64-toolchain

安装clang:

1
pacman -S mingw-w64-clang-x86_64-toolchain

2. 下载CMake

下载地址:Releases · Kitware/CMake

找到.msi扩展名的文件下载后,双击打开安装

还要在vscode上下载CMake Tools扩展

3. 第一个示例

目标: 在vscode上,使用CMake构建项目,并且使用了MinGW Makefiles生成器

步骤:

  1. 新建一个目录

  2. 创建文件main.cpp

    1
    2
    3
    4
    5
    #include<iostream> 
    int main() {
    std::cout << "Hello World!" << std::endl;
    return 0;
    }
  3. 创建文件CMakeLists.txt

    1
    2
    3
    4
    5
    6
    7
    cmake_minimum_required(VERSION 3.10) # 要求CMake的最低版本

    # 设置项目名称
    project(hello-world)

    # 添加一个可执行文件
    add_executable(hello-world main.cpp)
  4. 按下ctrl+shirt+p输入CMake: Configure,会让你选择编译器环境,选择我们安装的mingw-gcc就行(图中第三行)(如果选择错了可以点击左侧Cmake图标更换编译器配置)

  5. 按下ctrl+shirt+p输入CMake: Build(可以自己配置预设编译器环境,也可以让CMake去猜测要使用的编译器环境,这种方式就是没有指定预设,而是让CMake去猜,因为前面配置了编译器,所以也不算猜?)

  6. 找到vscode左侧中的CMake图标并打开:

  7. 选中项目右键选择“在终端中运行”:(可能需要先build一下才会出现)

  8. 成功!

4. 使用vcpkg安装依赖

安装步骤:

clone仓库:

1
git clone https://github.com/microsoft/vcpkg.git

进入vcpkg目录并编译:

1
2
3
cd vcpkg
./bootstrap-vcpkg.sh # Linux/macOS
./bootstrap-vcpkg.bat # Windows

会在项目根目录下生成一个vcpkg的可执行文件,安装包:(坑点,默认情况下安装包适用于MSVC编译器且动态库版本,如果你使用的是Mingw,需要额外指定<package_name>:x64-mingw-static)

1
vcpkg install <package_name>

卸载包:

1
vcpkg remove <package_name>

与CMake集成:

第一种方法:从命令行中安装依赖,需要设置工具链文件,可以使用如下任一途径:

  • CMakePresets.json文件中设置CMAKE_TOOLCHAIN_FILE
  • 在CMake配置调用中将-DCMAKE_TOOLCHAIN_FILE=<path/to/vcpkg>/scripts/buildsystems/vcpkg.cmake作为参数传递
  • CMakeLists.txt文件中初次调用project()之前,设置CMAKE_TOOLCHAIN_FILE CMake变量

与MSBuild集成:

直接通过vcpkg integrate install命令让vcpkg自动集成,它会修改VS的配置文件,使其自动搜索vcpkg安装的库

5. 第二个示例

目的: 使用命令行方法安装依赖(这样项目使用的就是共享库),CMake构建项目

步骤:

  1. 创建一个新目录

  2. 创建helloworld.cpp文件:

    1
    2
    3
    4
    5
    6
    7
    #include <fmt/core.h>

    int main()
    {
    fmt::print("Hello World!\n");
    return 0;
    }
  3. 安装依赖项:

    1
    vcpkg.exe install fmt:x64-mingw-static
  4. 创建CMakeLists.txt文件:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    cmake_minimum_required(VERSION 3.10)

    project(HelloWorld)

    # VCPKG集成,指定工具链文件和设置vcpkg共享库的路径
    set(CMAKE_TOOLCHAIN_FILE D:/software6/vcpkg/scripts/buildsystems/vcpkg.cmake)
    set(CMAKE_PREFIX_PATH D:/software6/vcpkg/installed/x64-mingw-static/share)

    find_package(fmt CONFIG REQUIRED)

    add_executable(HelloWorld helloworld.cpp)

    target_link_libraries(HelloWorld PRIVATE fmt::fmt)
  5. 按下ctrl+shirt+p输入CMake: Configure,会让你选择编译器环境,选择我们安装的mingw-gcc就行(图中第三行)

  6. 按下ctrl+shirt+p输入CMake: Build(可以自己配置预设编译器环境,也可以让CMake去猜测要使用的编译器环境,这种方式就是没有指定预设,而是让CMake去猜,因为前面配置了编译器,所以也不算猜?)

  7. 找到vscode左侧中的CMake图标并打开:

  8. 选中项目右键选择“在终端中运行”:

  9. 成功!


Windows上如何使用CMake构建项目
http://example.com/2024/10/31/Windows上如何使用CMake构建项目/
作者
凌云行者
发布于
2024年10月31日
许可协议