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
7cmake_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一下才会出现)
成功!
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_FILE
CMake变量
与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
13cmake_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图标并打开:
选中项目右键选择“在终端中运行”:
成功!