如何在补丁中包含来自 vcpkg 端口的 CMake?

问题描述 投票:0回答:1

我有很多内部库,我的特定团队想要迁移到 vcpkg。我的团队对 CMake 并不像我们应该的那样熟悉,我对此拥有最多的经验,但不是专家。作为额外的好处,由于过去缺乏标准的包管理器,有很多 CMake 实用程序文件通过硬编码路径在这些库之间共享。我正在尝试使用 vcpkg 使其更加模块化,但我一直在努力在

portfile.cmake
之外共享代码,这让我担心如果不利用硬编码路径或在每个端口中复制 CMake,我就无法做到这一点。

我的目标是使用某种形式的

include(name_of_script.cmake)
或类似的形式来利用这些文件。我已遵循 Authoring Script Ports 指南,但不确定这是正确的方法。假设像这样的基本端口:

vcpkg.json

    {
      "name": "cmake-utilities",
      "version": "1.0.0"
    }

portfile.cmake

file(INSTALL
    "${CMAKE_CURRENT_LIST_DIR}/some_utility.cmake"
    DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")

set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled)

some_utility.cmake

function(some_utility)
  message("something useful")
endfunction()

我可以依赖另一个端口中的

cmake-utilities
,并在该端口的
some_utility()
中调用
portfile.cmake
,但从那里我无法确定通过补丁将脚本包含在该端口的
CMakeLists.txt
中的方法,这是我需要这些实用程序的地方。我的想法是错误的,还是这不是 vcpkg 的功能?

cmake vcpkg
1个回答
0
投票

我不久前就想出来了,所以如果其他人需要达到同样的效果:

portfile.cmake

file(COPY "${CURRENT_INSTALLED_DIR}/share/cmake-utilities/some_utility.cmake" DESTINATION "${SOURCE_PATH}")

然后在端口的CMakeLists.txt中使用

include(some_utility.cmake)

© www.soinside.com 2019 - 2024. All rights reserved.