跳到主要内容

教程:导出已编译的依赖项

本教程将逐步讲解如何使用 kmpkg 导出已编译的依赖项。这一功能在跨项目共享库、简化分发流程时尤为实用;此外,你还可以将导出的归档包传输到无网络连接的环境(离线/隔离网络场景),适配离线部署需求。

前提条件

  • 安装 Visual Studio(需包含“C++ 开发工作负载”和“CMake 组件”)
  • 安装 Git
  • 安装 kmpkg 工具

步骤 1 - 安装 fmt

打开终端,导航到 kmpkg 的安装目录,然后为目标平台安装 fmt 库:

kmpkg install fmt:x64-windows

x64-windows 替换为你的目标三元组(triplet)(如 x86-windowsx64-linux 等)。

步骤 2 - 导出 fmt

安装完成后,执行以下命令导出 fmt 库:

kmpkg export fmt:x64-windows --zip

你会看到类似如下的输出:

The following packages are already built and will be exported:
fmt:x64-windows
* kmpkg-cmake:x64-windows
* kmpkg-cmake-config:x64-windows
Additional packages (*) need to be exported to complete this operation.
Exporting kmpkg-cmake:x64-windows...
Exporting kmpkg-cmake-config:x64-windows...
Exporting fmt:x64-windows...
Creating zip archive...
Zip archive exported at: C:\dev\kmpkg\kmpkg-export-20231106-164550.zip
To use exported libraries in CMake projects, add -DCMAKE_TOOLCHAIN_FILE=[...]/scripts/buildsystems/kmpkg.cmake to your CMake command line.

该命令会生成一个 ZIP 归档包,包含使用 fmt 库所需的所有文件(二进制文件、头文件、配置文件等)。你可以将这个归档包传输到离线环境中部署。如需查看所有支持的导出格式,请参考 export 命令文档

步骤 3 - 在新 CMake 项目中使用 fmt

要在新的 CMake 项目中使用导出的 fmt 库,请按照以下步骤操作:

  1. 将导出的 ZIP 包解压到本地已知路径(或传输到离线环境后解压);

  2. 创建一个新的目录作为 CMake 项目根目录,并进入该目录;

  3. 创建 CMakeLists.txt 文件,写入以下内容:

    cmake_minimum_required(VERSION 3.10)
    project(HelloWorld)

    find_package(fmt CONFIG REQUIRED)
    add_executable(HelloWorld main.cpp)
    target_link_libraries(HelloWorld PRIVATE fmt::fmt)
  4. 编写 main.cpp 文件,引入 fmt 并打印“Hello, World”:

    #include <fmt/core.h>

    int main()
    {
    fmt::print("Hello, World!\n");
    return 0;
    }
  5. 构建项目 - 在终端中,从项目根目录执行以下命令:

    cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=<解压包路径>/scripts/buildsystems/kmpkg.cmake
    cmake --build build

    注意:将 <解压包路径> 替换为你实际的 ZIP 包解压路径。

  6. 运行可执行文件:

    ..\build\Debug\HelloWorld.exe

后续步骤

至此,你已完成 fmt 库的导出,并在独立项目中成功使用该库。你可以将此流程推广到其他依赖项,满足跨项目、离线环境的依赖复用需求。