Build 多重conanfile.py管理

Build 多重conanfile.py管理,build,cmake,conan,Build,Cmake,Conan,假设我在一个项目中有两个不同的conanfile.py,我给conan install打了两次电话来安装它们的依赖项。将它们添加到cmake时遇到问题 如果我使用基本设置 include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) conan_basic_setup() 它只包括最新的一个。是否可以包含多个conanbuildinfo.cmake文件?如果您有两个完全独立的项目,您可以有两个不同的ConanFile,并将生成的文件放在不同的文件夹中: $

假设我在一个项目中有两个不同的conanfile.py,我给conan install打了两次电话来安装它们的依赖项。将它们添加到cmake时遇到问题

如果我使用基本设置

include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup()

它只包括最新的一个。是否可以包含多个conanbuildinfo.cmake文件?

如果您有两个完全独立的项目,您可以有两个不同的ConanFile,并将生成的文件放在不同的文件夹中:

$ conan install conanfile1.py --install-folder=folder1
$ conan install conanfile2.py --install-folder=folder2
然后在您的第一个项目中:

include(<...>/folder1/conanbuildinfo.cmake)
conan_basic_setup()
  • cmake\u find\u包
    生成器还为依赖关系图中的每个包生成一个
    findxxx.cmake
    文件。您可以使用
    find_包(XXXX)
    以及以后的结果,指定不同的依赖项。建议使用
    cmake\u find\u package\u multi
    生成器

如果您有两个完全独立的项目,您可以有两个不同的ConanFile,并将生成的文件放在不同的文件夹中:

$ conan install conanfile1.py --install-folder=folder1
$ conan install conanfile2.py --install-folder=folder2
然后在您的第一个项目中:

include(<...>/folder1/conanbuildinfo.cmake)
conan_basic_setup()
  • cmake\u find\u包
    生成器还为依赖关系图中的每个包生成一个
    findxxx.cmake
    文件。您可以使用
    find_包(XXXX)
    以及以后的结果,指定不同的依赖项。建议使用
    cmake\u find\u package\u multi
    生成器

  • 不,你不能。为什么你需要两个Conanfile?py是一个python脚本,您可以根据需要进行自定义,只有一个配方就足够了。我想将依赖项作为两个不同模块的独立项。例如,我想为其他模块设置一个general conanfile.py和另一个conanfile.py。保持这一点的唯一方法是使用模块中的需求更新general conanfile.py,如果模块存在,我想?您所说的其他模块是什么意思?是子模块吗?是的子模块。@ui我试图解决的问题是我的项目中有不同的子模块。我可能会包括所有的,或者其中的一些,或者只有一个。假设我使用所有模块,并将所有依赖项放在一个conanfile.py中,这很好。但如果我只添加一个模块并使用相同的conanfile.py,它将再次安装所有无效的依赖项。柯南有解决这种情况的办法吗?不,你不能。为什么你需要两个Conanfile?py是一个python脚本,您可以根据需要进行自定义,只有一个配方就足够了。我想将依赖项作为两个不同模块的独立项。例如,我想为其他模块设置一个general conanfile.py和另一个conanfile.py。保持这一点的唯一方法是使用模块中的需求更新general conanfile.py,如果模块存在,我想?您所说的其他模块是什么意思?是子模块吗?是的子模块。@ui我试图解决的问题是我的项目中有不同的子模块。我可能会包括所有的,或者其中的一些,或者只有一个。假设我使用所有模块,并将所有依赖项放在一个conanfile.py中,这很好。但如果我只添加一个模块并使用相同的conanfile.py,它将再次安装所有无效的依赖项。柯南有解决这种情况的办法吗?现在我来听听你的第一个建议。这很容易管理。一个conanfile的使用是无效的,因为我需要下载所有的软件包,即使我可能不使用它们。现在我会去你的第一个建议。这很容易管理。一个conanfile的使用是无效的,因为我需要下载所有的包,即使我可能不使用它们。