CMAKE:自动添加依赖项的依赖

CMAKE: automatically add dependencies of dependencies

我正在尝试将 boost-build 构建系统迁移到 cmake。

boost-build 的功能之一是自动链接依赖项的依赖项。

例如:

增强构建:

我正在构建一个可执行文件 app。这取决于 lib2

exe app
:   [ glob *.cpp ]
    /proj/lib2//lib2
;

反过来,lib2取决于lib1

lib lib2
:   [ glob *.cpp ]
    /proj/lib1//lib1
;

lib1没有依赖关系

lib lib1
:    [ glob *.cpp ]
;

lib1lib2 都是静态库。

boost-build 会自动将 lib1.a 添加到 app 的链接器行,因为它知道 lib2.a 依赖于 lib1.a

cmake:

明确地target_link_libraries 指令中声明 lib1lib2 有效:

lib1:

add_library(lib1 STATIC ${SOURCES})

lib2:

add_library(lib2 STATIC ${SOURCES})

应用程序:

add_executable(app ${SOURCES})
target_link_libraries(app lib1 lib2)

随着图书馆数量的增加,这变得很麻烦。

target_link_libraries(app lib1 lib2 lib3 lib4 lib5 lib6 lib7 lib8 lib9 ... libN)

问题:

lib2

中加上target_link_libraries就这么简单

lib1:

add_library(lib1 STATIC ${SOURCES})

lib2:

add_library(lib2 STATIC ${SOURCES})
target_link_libraries(lib2 lib1)

应用程序:

add_executable(app ${SOURCES})
target_link_libraries(app lib2)