有图版请看:Windows上如何使用CMake构建项目
1. 编译器安装
推荐使用MSYS2,windows平台下载地址:MSYS2
pacman基本命令:
pacman -Sy # 更新软件包数据
pacman -Syu # 更新所有
pacman -Ss <package_name> # 查询package信息
pacman -S <package_name> # 安装package
pacman -R <package_name> # 卸载package
安装编译工具链:
安装gcc/g++:
pacman -S mingw-w64-x86_64-toolchain
安装clang:
pacman -S mingw-w64-clang-x86_64-toolchain
2. 下载CMake
找到.msi扩展名的文件下载后,双击打开安装
还要在vscode上下载CMake Tools扩展
3. 第一个示例
目标: 在vscode上,使用CMake构建项目,并且使用了MinGW Makefiles生成器
步骤:
-
新建一个目录
-
创建文件
main.cpp
#include<iostream> int main() { std::cout << "Hello World!" << std::endl; return 0; }
-
创建文件
CMakeLists.txt
cmake_minimum_required(VERSION 3.10) # 要求CMake的最低版本 # 设置项目名称 project(hello-world) # 添加一个可执行文件 add_executable(hello-world main.cpp)
-
按下
ctrl+shirt+p
输入CMake: Configure
,会让你选择编译器环境,选择我们安装的mingw-gcc就行 -
按下
ctrl+shirt+p
输入CMake: Build
(可以自己配置预设编译器环境,也可以让CMake去猜测要使用的编译器环境,这种方式就是没有指定预设,而是让CMake去猜,因为前面配置了编译器,所以也不算猜?) -
找到vscode左侧中的CMake图标并打开:(或者直接在build目录下面就可以看到可执行文件)
-
选中项目右键选择“在终端中运行”:(可能需要先build一下才会出现)
-
成功!
4. 使用vcpkg安装依赖
安装步骤:
clone仓库:
git clone https://github.com/microsoft/vcpkg.git
进入vcpkg目录并编译:
cd vcpkg
./bootstrap-vcpkg.sh # Linux/macOS
./bootstrap-vcpkg.bat # Windows
会在项目根目录下生成一个vcpkg的可执行文件,安装包:(坑点,默认情况下安装包适用于MSVC编译器且动态库版本,如果你使用的是Mingw,需要额外指定<package_name>:x64-mingw-static)
vcpkg install <package_name>
卸载包:
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构建项目
步骤:
-
创建一个新目录
-
创建helloworld.cpp文件:
#include <fmt/core.h> int main() { fmt::print("Hello World!\n"); return 0; }
-
安装依赖项:
vcpkg.exe install fmt:x64-mingw-static
-
创建CMakeLists.txt文件:
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图标并打开:(或者直接在build目录下面就可以看到可执行文件)
-
选中项目右键选择“在终端中运行”:
-
成功!