You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于预编译二进制创建可被find_package识别的vcpkg包?

基于预编译二进制创建vcpkg包并支持find_package的方法

当然可以基于预编译二进制文件创建支持find_package的vcpkg包,你不需要完全手动编写所有CMake配置文件,vcpkg提供了工具函数来自动生成必要的配置文件,下面是具体实现方式:

一、使用vcpkg自动生成CMake配置文件

在你的portfile.cmake中,除了复制头文件和库文件,还需要调用vcpkg提供的两个核心函数来生成并修正配置文件:

1. 基础实现步骤

# 复制预编译的库文件和头文件到vcpkg包目录
file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/lib DESTINATION ${CURRENT_PACKAGES_DIR})
file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/include DESTINATION ${CURRENT_PACKAGES_DIR})

# 生成CMake配置文件模板
vcpkg_generate_cmake_config(
    PACKAGE_NAME "YourPackageName"  # 要和后续find_package使用的名称一致
    CONFIG_PATH "share/${PORT}/cmake"  # 配置文件存放路径,遵循vcpkg规范
)

# 修正配置文件路径,适配vcpkg的包结构
vcpkg_cmake_config_fixup(
    PACKAGE_NAME "YourPackageName"
    CONFIG_PATH "share/${PORT}/cmake"
)

2. 自定义配置模板(可选)

如果你的包有特殊需求(比如多组件、依赖声明),可以手动创建一个配置模板文件YourPackageNameConfig.cmake.in,放在port所在目录:

@PACKAGE_INIT@

# 引入目标文件
include("${CMAKE_CURRENT_LIST_DIR}/YourPackageNameTargets.cmake")

# 检查必要组件(如果有组件划分)
check_required_components("@PROJECT_NAME@")

然后在vcpkg_generate_cmake_config中指定模板:

vcpkg_generate_cmake_config(
    PACKAGE_NAME "YourPackageName"
    CONFIG_PATH "share/${PORT}/cmake"
    TEMPLATE "${CMAKE_CURRENT_LIST_DIR}/YourPackageNameConfig.cmake.in"
)

二、手动编写CMake配置文件(复杂场景)

如果自动生成的配置无法满足你的需求(比如需要自定义链接逻辑、设置编译选项、声明依赖等),可以手动编写完整的CMake配置文件,包括:

  • YourPackageNameConfig.cmake:核心配置文件,处理包的查找逻辑
  • YourPackageNameConfigVersion.cmake:版本匹配逻辑
  • YourPackageNameTargets.cmake:定义包的导入目标

编写完成后,将这些文件安装到vcpkg的share目录:

file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/cmake/YourPackageNameConfig.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT}/cmake)
file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/cmake/YourPackageNameConfigVersion.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT}/cmake)
file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/cmake/YourPackageNameTargets.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT}/cmake)

内容的提问来源于stack exchange,提问作者Tac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 09:58:12