У меня есть проект, который зависит от 3 библиотек A, B и C. A и B — это git-репозитории, основанные на CMake, и оба зависят от C и поэтому включают его как подмодуль (но разные версии из разных репо). Итак, структура моего проекта выглядит так:
ext/
libA/
libC/ (submodule of libA repo)
...
libB/
libC/ (submodule of libB repo)
...
main.cpp
CMakeLists.txt
CMakeLists.txt выглядит так:
add_subdirectory("ext/libA")
add_subdirectory("ext/libB")
add_executable(MyApp main.cpp)
target_include_directories(MyApp ...)
target_link_library(MyApp libA libB libC)
Каков наилучший способ справиться с этой вложенной общей зависимостью? В идеале я хотел бы использовать одну версию libC для libA, libB и моего проекта, но я не знаю ненавязчивого способа (т.е. без изменения файлов cmake libA и libB) сделать это.
Мне очень нравится комбинация подмодулей и CMake add_subdirectory, потому что она проста и понятна, но вложенные зависимости сложны.
Задача ещё не решена.
Других решений пока нет …