教程:在 Visual Studio 中使用 MSBuild 安装和使用包

本教程介绍如何通过 MSBuild、vcpkg 和 Visual Studio 创建使用 fmt 库的 C++ "Hello World" 程序。 你将安装依赖项、配置、生成和运行简单的应用程序。

先决条件:

1 - 设置 vcpkg

  1. 克隆存储库

    第一步是从 GitHub 克隆 vcpkg 存储库。 存储库包含用于获取 vcpkg 可执行文件的脚本,以及由 vcpkg 社区维护的特选开放源代码库的注册表。 若要执行此操作,请运行:

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

    vcpkg 特选注册表是一组数量超过 2000 个的开源库。 这些库已通过 vcpkg 的持续集成管道进行验证,可以协同工作。 虽然 vcpkg 存储库不包含这些库的源代码,但它保存方案和元数据,以便在系统中生成和安装它们。

  2. 运行启动脚本

    现在,你已经克隆了 vcpkg 存储库,请导航到 vcpkg 目录并执行启动脚本:

    cd vcpkg && bootstrap-vcpkg.bat
    
    cd vcpkg; .\bootstrap-vcpkg.bat
    
    cd vcpkg && ./bootstrap-vcpkg.sh
    

    启动脚本执行先决条件检查并下载 vcpkg 可执行文件。

    就这么简单! vcpkg 已安装并可供使用。

  1. 与 Visual Studio MSBuild 集成

下一步是设置 vcpkg 的用户范围实例,以便 MSBuild 能够找到它:

.\vcpkg.exe integrate install

输出:

All MSBuild C++ projects can now #include any installed libraries. Linking will be handled automatically. Installing new libraries will make them instantly available.

2 - 设置 Visual Studio 项目

  1. 创建 Visual Studio 项目

    • 在 Visual Studio 中,使用“控制台应用程序”模板创建一个新项目

    创建新的 C++ Windows 控制台应用程序

    Visual Studio UI 的屏幕截图,显示如何在 Visual Studio 中创建新的 C++ Windows 控制台应用程序

    • 将项目命名为 "helloworld"
    • 选中“将解决方案和项目放在同一目录中”复选框。
    • 单击“创建”按钮

    命名 MSBuild C++ 项目

    Visual Studio UI 的屏幕截图,用于命名 MSBuild C++ 项目和单击“创建”按钮。

  2. 配置 VCPKG_ROOT 环境变量。

    在 Visual Studio 中打开内置的开发人员 PowerShell 窗口。

    打开内置开发人员 powershell

    Visual Studio UI 内置的 PowerShell 开发人员窗口的屏幕截图

    运行以下命令:

    $env:VCPKG_ROOT = "C:\path\to\vcpkg"
    $env:PATH = "$env:VCPKG_ROOT;$env:PATH"
    

    设置环境变量

    Visual Studio UI 内置的 PowerShell 开发人员窗口的屏幕截图,显示如何设置 VCPKG_ROOT 并将其添加到 PATH。

    注意

    以这种方式设置环境变量只会影响当前终端会话。 若要使这些更改在所有会话中永久存在,请通过“Windows 系统环境变量”面板进行设置。

    在 Visual Studio 中打开开发人员命令提示。

    打开 Visual Studio 开发人员命令提示符。

    Visual Studio UI 的开发人员命令提示的屏幕截图。

    运行以下命令:

    set "VCPKG_ROOT=C:\path\to\vcpkg"
    set PATH=%VCPKG_ROOT%;%PATH%
    

    设置环境变量

    Visual Studio 开发人员命令提示的屏幕截图,显示如何设置 VCPKG_ROOT 并将其添加到 PATH。

    注意

    以这种方式设置环境变量只会影响当前终端会话。 若要使这些更改在所有会话中永久存在,请通过“Windows 系统环境变量”面板进行设置。

    设置 VCPKG_ROOT 可帮助 Visual Studio 查找 vcpkg 实例。 将它添加到 PATH 确保可以直接从 shell 运行 vcpkg 命令。

  3. 生成清单文件并添加依赖项。

    运行以下命令来创建 vcpkg 清单文件 (vcpkg.json):

    vcpkg new --application
    

    vcpkg new 命令在项目的目录中添加一个 vcpkg.json 文件和一个 vcpkg-configuration.json 文件。

    添加 fmt 包作为依赖项:

    vcpkg add port fmt
    

    vcpkg.json 现在应包含:

    {
        "dependencies": [
            "fmt"
        ]
    }
    

    这是清单文件。 vcpkg 读取清单文件,以了解要安装和与 MSBuild 集成的依赖项,从而提供项目所需的依赖项。

    生成的 vcpkg-configuration.json 文件引入了一个基线,用于对项目的依赖项设置最低版本约束。 修改此文件超出了本教程的范围。 虽然在本教程中不适用,但建议将 vcpkg-configuration.json 文件保留在源代码管理之下,以确保不同开发环境中的版本一致性。

3 - 设置项目文件

修改 helloworld.cpp 文件。

helloworld.cpp 的内容替换为以下代码:

#include <fmt/core.h>

int main()
{
    fmt::print("Hello World!\n");
    return 0;
}

此源文件包含属于 <fmt/core.h> 库的 fmt 标头。 main() 函数调用 fmt::print() 将 "Hello World!" 消息输出到控制台。

注意

首次使用 MSBuilds 创建项目时,项目中会显示错误波形曲线。 生成项目以获取 vcpkg 依赖项,从而删除这些错误波形曲线。

4 - 启用清单模式

导航到项目的“项目属性”页。 在配置属性> vcpkg下,将 Use vcpkg manifest 设置为 Yes。 在安装 vcpkg 清单中的任何依赖项之前,MSBuild 会检查是否设置了此属性。

在项目属性中启用清单模式

在 Visual Studio 项目属性中启用 vcpkg 清单模式的屏幕截图

使用 vcpkg 从项目中检测到的默认值来填充其他设置(如三元组),这在配置项目时非常有用。

5 - 生成并运行该项目

  1. 生成项目。

    Ctrl+Shift+B 在 Visual Studio 中生成项目并获取 vcpkg 依赖项。

如果 MSBuild 检测到 vcpkg.json 文件并在项目中启用了清单,作为预生成步骤,MSBuild 会安装清单的依赖项。 依赖项安装在项目的生成输出目录的 vcpkg_installed 目录中。 可以直接使用库安装的任何标头,安装的任何库将自动关联。

注意

vcpkg install 为库生成调试和发布配置。 若要仅生成发布库,请将 VCPKG_RELEASE_ONLY 添加到三元组。

  1. 运行该应用程序。

    最后,运行可执行文件:

    运行可执行文件

    Visual Studio UI 的运行可执行文件的屏幕截图。

    你应会看到输出:

    程序输出

    程序输出的屏幕截图 - "Hello World!"

后续步骤

要了解关于 vcpkg.json 和 vcpkg MSBuild 集成的详细信息,请参阅参考文档: