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

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

DDD
Libérer: 2024-12-27 19:49:14
original
953 Les gens l'ont consulté

How Do I Properly Manage Include Directories and Header Files in CMake?

Comprendre l'inclusion des répertoires dans CMake

Lorsque vous travaillez avec des fichiers d'en-tête dans CMake, il est crucial de garantir une inclusion et un suivi des dépendances appropriés. CMake fait la différence entre les fichiers d'en-tête internes et externes au projet. Pour inclure correctement les fichiers d'en-tête, suivez ces étapes :

  1. Ajoutez le répertoire d'inclusion :

    Pour spécifier un répertoire contenant les fichiers d'en-tête à inclure, utilisez la fonction target_include_directories :

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

    Pour les anciennes versions de CMake sans target_include_directories, utilisez include_directories à la place :

    include_directories(${YOUR_DIRECTORY})
    Copier après la connexion
  2. Ajouter des en-têtes aux fichiers source :

    Pour suivre les dépendances et générer des Makefiles précis, ajoutez les fichiers d'en-tête à la liste des fichiers sources 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

En suivant ces étapes, CMake reconnaîtra les en-têtes spécifiés dans le cadre du projet et les inclura dans son suivi des dépendances, garantissant ainsi une gestion appropriée dans les fichiers de sortie générés tels que les Makefiles et les fichiers de projet pour les IDE.

Utilisation des en-têtes sur plusieurs cibles :

Pour réutiliser les en-têtes sur plusieurs cibles, envisagez l'approche suivante :

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 méthode garantit que les cibles de bibliothèque et d'exécutable incluent les en-têtes spécifiés et suivent correctement leurs dépendances.

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal