J'essaye de migrer un système de construction boost-build pour cmake.CMAKE: ajouter automatiquement les dépendances des dépendances
L'une des fonctionnalités de boost-build est de relier automatiquement les dépendances des dépendances.
Par exemple:
boost-build:
Je construis un exécutable app
. Cela dépend de lib2
exe app
: [ glob *.cpp ]
/proj/lib2//lib2
;
À son tour, lib2
dépend lib1
lib lib2
: [ glob *.cpp ]
/proj/lib1//lib1
;
et lib1
n'a pas de dépendances
lib lib1
: [ glob *.cpp ]
;
Les deux lib1
et lib2
sont statiques libs.
boost-build ajoutera automatiquement lib1.a
à la ligne de liaison pour app
parce qu'il sait que lib2.a
dépend de lib1.a
CMake:
Explicitement indiquant à la fois lib1
et lib2
dans les travaux de directive target_link_libraries
:
lib1:
add_library(lib1 STATIC ${SOURCES})
lib2:
add_library(lib2 STATIC ${SOURCES})
app:
add_executable(app ${SOURCES})
target_link_libraries(app lib1 lib2)
Comme le nombre de bibliothèques se développe cela devient lourd.
target_link_libraries(app lib1 lib2 lib3 lib4 lib5 lib6 lib7 lib8 lib9 ... libN)
Questions:
- Est-il possible de préciser que
lib2
dépendlib1
- Est-il possible de dire
app
de tirer danslib2
et tout dépendlib2
?
vous pouvez jeter un oeil à: http://stackoverflow.com/questions/32756195/recursive-list-of-link-libraries-in-cmake –
@TomaszLewowski celui-ci est un bien meilleur: dependencies-between-libraries-cmake] (http://stackoverflow.com/questions/7970071/setting-dependencies-between-libraries-cmake) –