Maison > Article > développement back-end > Comment gérer efficacement les dépendances dans CMake : un guide des dépendances locales, des cibles de bibliothèque et de la structure du projet ?
Gestion des dépendances dans CMake : source, bibliothèque et CMakeLists.txt
Dans CMake, gestion des dépendances entre fichiers sources, bibliothèques et CMakeLists .txt garantit un projet bien structuré et efficace. Cet article explore les stratégies permettant de gérer efficacement les dépendances dans un projet complexe impliquant plusieurs bibliothèques et exécutables.
Dépendances locales : un avantage
La configuration de dépendances locales simplifie la gestion des dépendances en spécifiant dépendances aux niveaux source et lien dans le fichier CMakeLists.txt de chaque sous-répertoire. Cette approche fournit une hiérarchie claire et évite les ballonnements inutiles en excluant les dépendances non pertinentes.
Exemple de structure de projet et CMakeLists.txt
Considérez un projet avec des bibliothèques interconnectées et un exécutable :
Lib - LibA - CMakeLists.txt - Src - a.cc - Inc - a.h - LibB - CMakeLists.txt - Src - b.cc - Inc - b.h - LibC - CMakeLists.txt - Src - c.cc - Inc - c.h App1 - CMakeLists.txt - Src - main.cc
Bibliothèque CMakeLists.txt (LibA, LibB, LibC)
include_directories(Inc ../LibC/Inc) add_subdirectory(../LibC LibC) add_library(LibA Src/a.cc Inc/a.h) target_link_libraries(LibA LibC) include_directories(Inc) add_library(LibB Src/b.cc Inc/b.h) include_directories(Inc ../LibB/Inc) add_subdirectory(../LibB LibB) add_library(LibC Src/c.cc Inc/c.h) target_link_libraries(LibC LibB)
App1 CMakeLists.txt
cmake_minimum_required(VERSION 2.8) project(App1 CXX) file(WRITE "Src/main.cc" "#include \"a.h\"\n#include \"b.h\"\nint main()\n{\na();\nb();\nreturn 0;\n}") ... include_directories(../Lib/LibA/Inc ../Lib/LibB/Inc) add_subdirectory(../Lib/LibA LibA) add_subdirectory(../Lib/LibB LibB) add_executable(App1 Src/main.cc) target_link_libraries(App1 LibA LibB)
Graphique des dépendances de la bibliothèque
Le graphe des dépendances pour ce projet : App1 -> LibA -> LibC -> LibB App1 -> LibB
Stratégies de gestion de plusieurs dépendances
Plusieurs approches existent pour gérer plusieurs dépendances :
Bonnes pratiques
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!