如何作为嵌套子模块提供时,如何处理同一个库的多个版本

时间:2016-03-28 13:23:26

标签: c++ cmake git-submodules

我有一个依赖于3个库A,B和C的项目.A和B是基于CMake的git repos,它们都依赖于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)

处理这种嵌套公共依赖项的最佳方法是什么?理想情况下,我会为libA,libB和我的项目使用单个版本的libC,但我不知道这样做的非侵入式方式(即不修改libA和libB的cmake文件)。

我非常喜欢子模块和CMake add_subdirectory的组合,因为它简单而干净,但嵌套的依赖项很棘手。

0 个答案:

没有答案