Если у вас есть 2 совершенно разных проекта, вы можете иметь 2 разных conanfiles и поместить сгенерированные файлы в разные папки:
$ conan install conanfile1.py --install-folder=folder1
$ conan install conanfile2.py --install-folder=folder2
Затем в вашем первом проекте:
include(<...>/folder1/conanbuildinfo.cmake)
conan_basic_setup()
А в вашем втором проекте:
include(<...>/folder2/conanbuildinfo.cmake)
conan_basic_setup()
Вам потребуется определить какое-то непротиворечивое соглашение, чтобы найти сгенерированные файлы для каждого проекта.
Обратите внимание, однако, что если разные модули предназначены для Если вы не используете одни и те же зависимости и одни и те же версии, вы, скорее всего, получите ошибки компоновки или времени выполнения в вашем глобальном приложении. Если модули связаны, и вы хотите использовать одни и те же версии зависимостей, то вам определенно нужно использовать только 1 конанфайл со всеми определенными в нем зависимостями.
Обратите внимание, что существуют различные способы определения спецификаций c зависимостей, которые вы хотите, даже если вы используете только 1 конанфайл:
- Вы можете использовать ЦЕЛИ генератора
cmake
:
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup(TARGETS)```
add_library(mylib1 ... <sources>)
target_link_libraries(mylib1 PUBLIC CONAN_PKG::Dep1 CONAN_PKG::Dep2)
add_library(mylib2 ... <sources>)
target_link_libraries(mylib2 PUBLIC CONAN_PKG::Dep3 CONAN_PKG::Dep4)
- Генераторы
cmake_find_package
также генерируют один файл findXXXX.cmake
для каждого пакета в графе зависимостей. Вы можете использовать find_package(XXXX)
и более поздние результаты, указав различные зависимости. Рекомендуется генератор cmake_find_package_multi
.