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

如何在Conan生成的vsgConfig.cmake中自动引入vsgMacros.cmake?

解决VulkanSceneGraph(VSG) Conan包中vsgMacros.cmake自动引入问题

核心思路:自定义Conan的CMake配置模板

Conan默认生成的vsgConfig.cmake不会自动包含额外宏文件,要还原原生VSG的隐式引入体验,需要自定义CMake配置模板,让生成的Config文件自动加载vsgMacros.cmake。

具体实现步骤

  1. 添加自定义Config模板文件
    在VSG根仓库的Conan recipe目录下,创建vsgConfig.cmake.in模板,内容如下:
@PACKAGE_INIT@

# 自动引入vsgMacros.cmake,保持原生使用逻辑
include("${CMAKE_CURRENT_LIST_DIR}/vsgMacros.cmake")

# 保留Conan默认的目标导入逻辑
include("${CMAKE_CURRENT_LIST_DIR}/vsgTargets.cmake")
check_required_components(vsg)

这个模板会在包配置初始化时,自动引入同目录下的宏文件,同时保留Conan生成的目标导入逻辑。

  1. 修改Conan Recipe配置
    在conanfile.py中,确保模板和宏文件被正确打包,并指定使用自定义模板生成Config文件:
def package(self):
    # 复制原生VSG的cmake文件(包含vsgMacros.cmake)
    self.copy("*.cmake", dst="lib/cmake/vsg", src="cmake")
    # 复制自定义Config模板
    self.copy("vsgConfig.cmake.in", dst="lib/cmake/vsg")

def generate(self):
    from conan.tools.cmake import CMakeDeps
    cmake_deps = CMakeDeps(self)
    # 指定使用自定义模板生成vsgConfig.cmake
    cmake_deps.configure_configs(vsg={"cmake_file": "vsgConfig.cmake.in"})
    cmake_deps.generate()
  1. 下游项目验证
    下游项目通过find_package(vsg REQUIRED)后,无需手动执行include(vsgMacros),即可直接使用VSG的宏定义,和原生安装的使用体验完全一致。

轻量化替代方案:动态修改生成的Config文件

如果不想维护额外模板,可以在Conan生成Config文件后,直接追加宏文件引入语句:

def generate(self):
    from conan.tools.cmake import CMakeDeps
    cmake_deps = CMakeDeps(self)
    cmake_deps.generate()
    
    # 找到生成的vsgConfig.cmake,追加引入逻辑
    config_file = self.generators_folder / "vsgConfig.cmake"
    if config_file.exists():
        with open(config_file, "a") as f:
            f.write('\ninclude("${CMAKE_CURRENT_LIST_DIR}/vsgMacros.cmake")\n')

这种方式无需额外模板,但要确保vsgMacros.cmake已被正确打包到Conan包的lib/cmake/vsg目录下。

关键注意事项

  • 打包时必须保证vsgMacros.cmake和vsgConfig.cmake处于同一路径,否则CMAKE_CURRENT_LIST_DIR无法正确定位宏文件。
  • VSG下游仓库(如vsgXchange)的Conan recipe只需依赖根仓库的vsg包,即可自动继承宏文件的隐式引入逻辑,无需额外配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 13:13:07