Maison > développement back-end > C++ > Comment gérer correctement les répertoires d'inclusion et les dépendances d'en-tête dans CMake ?

Comment gérer correctement les répertoires d'inclusion et les dépendances d'en-tête dans CMake ?

Mary-Kate Olsen
Libérer: 2024-12-19 15:43:10
original
557 Les gens l'ont consulté

How to Properly Manage Include Directories and Header Dependencies in CMake?

Ajouter correctement des répertoires d'inclusion avec CMake

Dans CMake, la gestion des répertoires d'inclusion et des dépendances d'en-tête est cruciale pour une compilation efficace du projet. Cet article aborde la question de savoir comment signaler correctement à CMake qu'un répertoire particulier contient des en-têtes à inclure et à suivre par le Makefile généré.

Ajout du répertoire d'inclusion

Pour inclure un répertoire contenant des en-têtes, utilisez la commande suivante :

target_include_directories(test PRIVATE ${YOUR_DIRECTORY})
Copier après la connexion

Si vous utilisez une ancienne version de CMake qui ne prend pas en charge target_include_directories, utilisez plutôt l'ancien include_directories :

include_directories(${YOUR_DIRECTORY})
Copier après la connexion

Suivi des dépendances d'en-tête

Pour suivre les dépendances d'en-tête, vous devez ajouter les fichiers d'en-tête à la liste des fichiers source pour la cible actuelle :

set(SOURCES file.cpp file2.cpp ${YOUR_DIRECTORY}/file1.h ${YOUR_DIRECTORY}/file2.h)
add_executable(test ${SOURCES})
Copier après la connexion

Ce faisant, les fichiers d'en-tête apparaîtront comme dépendances dans le Makefile et d'autres fichiers de projet générés, garantissant leur inclusion lors de la compilation.

Utilisation des en-têtes pour plusieurs cibles

Pour utiliser les mêmes fichiers d'en-tête sur plusieurs cibles, suivez ces étapes :

set(HEADER_FILES ${YOUR_DIRECTORY}/file1.h ${YOUR_DIRECTORY}/file2.h)

add_library(mylib libsrc.cpp ${HEADER_FILES})
target_include_directories(mylib PRIVATE ${YOUR_DIRECTORY})

add_executable(myexec execfile.cpp ${HEADER_FILES})
target_include_directories(myexec PRIVATE ${YOUR_DIRECTORY})
Copier après la connexion

Cette approche garantit que toutes les cibles ont accès aux en-têtes nécessaires et que les dépendances des en-têtes sont suivies de manière appropriée. En suivant ces étapes, vous pouvez gérer efficacement les répertoires d'inclusion et les dépendances d'en-tête dans vos projets CMake.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal