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

CMAKE: automatically add dependencies of dependencies

本文关键字:依赖 添加 CMAKE      更新时间:2023-10-16

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

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

例如:

助推构建:

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

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

反过来,lib2依赖于lib1

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

并且CCD_ 5不具有依赖性

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依赖于lib1
  • 有没有办法告诉app拉入lib2以及lib2依赖什么

只需将target_link_libraries添加到lib2

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)