在 Visual Studio 中使用 CMake 安装和使用包
本教程展示了如何使用 CMake、kmpkg 和 Visual Studio 创建一个 C++ “Hello World” 程序,并使用 fmt 库。你将学习如何安装依赖、配置、构建并运行一个简单的应用程序。
前提条件
- Visual Studio(需安装 C++ 开发工作负载和 CMake 组件)
- Git
1 - 设置 kmpkg
- 克隆仓库
首先从 GitHub 克隆 kmpkg 仓库。该仓库包含获取 kmpkg 可执行文件的脚本,以及由 kmpkg 社区维护的精选开源库注册表。运行:
git clone https://github.com/kumose/kmpkg.git
kmpkg 精选注册表包含超过 2000 个开源库,这些库已通过持续集成验证可协同工作。仓库本身不包含源码,但包含构建和安装所需的配方和元数据。
- 运行引导脚本
进入 kmpkg 目录并执行引导脚本:
- cmd
- powershell
- bash
cd kmpkg && bootstrap-kmpkg.bat
cd kmpkg; .\bootstrap-kmpkg.bat
cd kmpkg && ./bootstrap-kmpkg.sh
引导脚本会检查前置条件并下载 kmpkg 可执行文件。kmpkg 现在已可用。
2 - 设置 Visual Studio 项目
- 创建 Visual Studio 项目
- 使用 “CMake Project” 模板创建新项目
- 项目命名为 "helloworld"
- 勾选 “Place solution and project in the same directory”
- 点击 “Create”
- 配置
KMPKG_ROOT环境变量
以这种方式设置环境变量只影响当前终端会话。如需永久生效,请通过 Windows 系统环境变量面板设置。
- powershell
- cmd
打开 Visual Studio 内置 Developer PowerShell,运行:
$env:KMPKG_ROOT="C:\path\to\kmpkg"
$env:PATH="$env:KMPKG_ROOT;$env:PATH"
打开 Visual Studio Developer Command Prompt,运行:
set "KMPKG_ROOT=C:\path\to\kmpkg"
set PATH=%KMPKG_ROOT%;%PATH%
设置 KMPKG_ROOT 可帮助 Visual Studio 定位 kmpkg,添加到 PATH 后可直接运行 kmpkg 命令。
- 生成清单文件并添加依赖
在项目目录运行:
kmpkg new --application
kmpkg add port fmt
kmpkg.json 内容如下:
{
"dependencies": [
"fmt"
]
}
kmpkg 通过清单文件安装依赖并集成 CMake。生成的 kmpkg-configuration.json 文件包含依赖最小版本约束,建议纳入版本控制。
3 - 设置项目文件
- 修改
helloworld.cpp:
#include <fmt/core.h>
int main()
{
fmt::print("Hello World!\n");
return 0;
}
- 配置 CMake Presets 文件
CMakePresets.json:
{
"version": 2,
"configurePresets": [
{
"name": "kmpkg",
"generator": "Ninja",
"binaryDir": "${sourceDir}/build",
"cacheVariables": {
"CMAKE_TOOLCHAIN_FILE": "$env{KMPKG_ROOT}/scripts/buildsystems/kmpkg.cmake"
}
}
]
}
CMakeUserPresets.json:
{
"version": 2,
"configurePresets": [
{
"name": "default",
"inherits": "kmpkg",
"environment": {
"KMPKG_ROOT": "<path to kmpkg>"
}
}
]
}
- 修改
CMakeLists.txt:
cmake_minimum_required(VERSION 3.10)
project(HelloWorld)
find_package(fmt CONFIG REQUIRED)
add_executable(HelloWorld helloworld.cpp)
target_link_libraries(HelloWorld PRIVATE fmt::fmt)
每行解释:
cmake_minimum_required(VERSION 3.10):最低 CMake 版本project(HelloWorld):项目名称find_package(fmt CONFIG REQUIRED):查找 fmt 库add_executable(HelloWorld helloworld.cpp):创建可执行文件target_link_libraries(HelloWorld PRIVATE fmt::fmt):链接 fmt 库
4 - 构建与运行
- 通过菜单
Build > Build All构建项目 - 运行可执行文件,输出:
Hello World!
下一步
了解更多 kmpkg.json 内容: