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
Patricia Arquetteoriginal
2024-12-18 14:27:10540parcourir

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})
    • Pour les anciennes versions de CMake (par exemple. , 2.8.10 ou version antérieure, sans target_include_directories support):

      include_directories(${YOUR_DIRECTORY})
  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})

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

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