Windows上如何使用CMake构建项目
1. 编译器安装
推荐使用MSYS2,windows平台下载地址:MSYS2
pacman基本命令:
| 1 |  | 
安装编译工具链:
安装gcc/g++:
| 1 |  | 
安装clang:
| 1 |  | 
2. 下载CMake
找到.msi扩展名的文件下载后,双击打开安装
还要在vscode上下载CMake Tools扩展
3. 第一个示例
目标: 在vscode上,使用CMake构建项目,并且使用了MinGW Makefiles生成器
步骤:
- 新建一个目录 
- 创建文件 - main.cpp- 1 
 2
 3
 4
 5- #include<iostream>
 int main() {
 std::cout << "Hello World!" << std::endl;
 return 0;
 }
- 创建文件 - 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)
- 按下 - ctrl+shirt+p输入- CMake: Configure,会让你选择编译器环境,选择我们安装的mingw-gcc就行(图中第三行)(如果选择错了可以点击左侧Cmake图标更换编译器配置) 
- 按下 - ctrl+shirt+p输入- CMake: Build(可以自己配置预设编译器环境,也可以让CMake去猜测要使用的编译器环境,这种方式就是没有指定预设,而是让CMake去猜,因为前面配置了编译器,所以也不算猜?)
- 找到vscode左侧中的CMake图标并打开:  
- 选中项目右键选择“在终端中运行”:(可能需要先build一下才会出现)  
- 成功!  
4. 使用vcpkg安装依赖
安装步骤:
clone仓库:
| 1 |  | 
进入vcpkg目录并编译:
| 1 |  | 
会在项目根目录下生成一个vcpkg的可执行文件,安装包:(坑点,默认情况下安装包适用于MSVC编译器且动态库版本,如果你使用的是Mingw,需要额外指定<package_name>:x64-mingw-static)
| 1 |  | 
卸载包:
| 1 |  | 
与CMake集成:
第一种方法:从命令行中安装依赖,需要设置工具链文件,可以使用如下任一途径:
- 在CMakePresets.json文件中设置CMAKE_TOOLCHAIN_FILE
- 在CMake配置调用中将-DCMAKE_TOOLCHAIN_FILE=<path/to/vcpkg>/scripts/buildsystems/vcpkg.cmake作为参数传递
- 在CMakeLists.txt文件中初次调用project()之前,设置CMAKE_TOOLCHAIN_FILECMake变量
与MSBuild集成:
直接通过vcpkg integrate install命令让vcpkg自动集成,它会修改VS的配置文件,使其自动搜索vcpkg安装的库
5. 第二个示例
目的: 使用命令行方法安装依赖(这样项目使用的就是共享库),CMake构建项目
步骤:
- 创建一个新目录 
- 创建helloworld.cpp文件: - 1 
 2
 3
 4
 5
 6
 7- #include <fmt/core.h>
 int main()
 {
 fmt::print("Hello World!\n");
 return 0;
 }
- 安装依赖项: - 1 - vcpkg.exe install fmt:x64-mingw-static
- 创建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)
- 按下 - ctrl+shirt+p输入- CMake: Configure,会让你选择编译器环境,选择我们安装的mingw-gcc就行(图中第三行) 
- 按下 - ctrl+shirt+p输入- CMake: Build(可以自己配置预设编译器环境,也可以让CMake去猜测要使用的编译器环境,这种方式就是没有指定预设,而是让CMake去猜,因为前面配置了编译器,所以也不算猜?)
- 找到vscode左侧中的CMake图标并打开:  
- 选中项目右键选择“在终端中运行”:  
- 成功! 