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)