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

Comment configurer correctement les répertoires d'inclusion d'en-tête dans CMake ?

Patricia Arquette
Libérer: 2024-12-18 14:27:10
original
613 Les gens l'ont consulté

How to Properly Configure Header Include Directories in CMake?

Configuration des répertoires d'inclusion d'en-tête avec CMake

Comprendre la gestion des dépendances d'en-tête de CMake

CMake traite initialement les fichiers d'en-tête en dehors du projet répertoire en tant que ressources externes. Ce comportement peut entraîner des problèmes de suivi des dépendances dans les projets générés.

Solution : Désignation des répertoires d'inclusion

Pour inclure correctement les en-têtes, deux étapes sont nécessaires :

  1. Ajout de l'inclusion Répertoire :

    • Utilisez target_include_directories pour les versions récentes de CMake (par exemple, 3.0) :

      target_include_directories(test PRIVATE ${YOUR_DIRECTORY})
      Copier après la connexion
    • Pour les anciennes versions de CMake (par exemple. , 2.8.10 ou version antérieure, sans target_include_directories support):

      include_directories(${YOUR_DIRECTORY})
      Copier après la connexion
  2. Inclure les fichiers d'en-tête dans la liste des sources cibles :

    Pour suivre les dépendances, ajoutez un en-tête fichiers à la liste source pour le target :

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

Exemple : liaison d'en-têtes à plusieurs cibles

Pour partager des fichiers d'en-tête sur plusieurs cibles :

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

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
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