CMAKE: автоматически добавлять зависимости зависимостей

Я пытаюсь перенести систему сборки 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 ]
;

И то и другое lib1 а также lib2 статические библиотеки.

boost-build автоматически добавит lib1.a на линию компоновщика для app потому что это знает lib2.a зависит от lib1.a

CMake:

Явно заявляя оба lib1 а также lib2 в target_link_libraries директивные работы:

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 зависит от?

1 ответ

Решение

Это так же просто, как добавление 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)
Другие вопросы по тегам