Я пытаюсь перенести систему сборки boost-build на cmake.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
являются статическими ЛИЭС.
наддува сборки автоматически добавит 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
зависит?
, вы можете взглянуть на: http://stackoverflow.com/questions/32756195/recursive-list-of-link-libraries-in-cmake –
@TomaszLewowski это намного лучший вариант: [настройка- зависимостей между библиотеками-cmake] (http://stackoverflow.com/questions/7970071/setting-dependencies-between-libraries-cmake) –