如何将CMake变量发送到vcpkg依赖项

vnzz0bqm  于 2023-04-21  发布在  其他
关注(0)|答案(1)|浏览(110)

我需要发送一个cmake变量给vcpkg中的一个依赖项,更具体地说,假设这是我的vcpkg.json

{
  "name": "your-project-name",
  "version-string": "1.1.0",
  "dependencies": [
    "vtk"
  ]
}

现在我需要将VTK_MODULE_ENABLE_VTK_GUISupportQtQuick设置为YES,通常您可以在使用配置CMake时直接执行此操作

-DVTK_MODULE_ENABLE_VTK_GUISupportQtQuick=YES

但是我怎么能在vcpkg中做到这一点呢?
我在CMake中尝试了以下操作:

if (NOT DEFINED CMAKE_TOOLCHAIN_FILE)
        set(CMAKE_TOOLCHAIN_FILE "${CMAKE_SOURCE_DIR}/vcpkg/scripts/buildsystems/vcpkg.cmake" CACHE PATH "toolchain file")
        set(VTK_MODULE_ENABLE_VTK_GUISupportQtQuick YES CACHE)
endif()

但似乎CMake会忽略它

oxcyiej7

oxcyiej71#

vcpkg中的vtk端口具有如下特征:

{
  "name": "your-project-name",
  "version-string": "1.1.0",
  "dependencies": [
    { 
        "name": "vtk",
        "features": ["qt"],
        "default-features": false
    }
  ]
}

应该给予你部分你想要的,但快速模块不包括在该功能,所以你需要去更深一点。有两种方法来实现你想要的:a)端口覆盖(其复制端口并编辑portfile.cmake以具有所述选项)或B)使用每个端口定制和设置的三元组覆盖

if(PORT STREQUAL "vtk")
  set(VCPKG_CMAKE_CONFIGURE_OPTIONS -DVTK_MODULE_ENABLE_VTK_GUISupportQtQuick=Yes)
endif()

但是,在CMakeLists.txt中设置-DVTK_MODULE_ENABLE_VTK_GUISupportQtQuick=Yes并不起任何作用,因为它与vcpkg在内部执行的操作完全隔离。

相关问题