Heim >Backend-Entwicklung >C++ >Wie konfiguriere ich Header-Include-Verzeichnisse in CMake richtig?

Wie konfiguriere ich Header-Include-Verzeichnisse in CMake richtig?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-18 14:27:10542Durchsuche

How to Properly Configure Header Include Directories in CMake?

Konfigurieren von Header-Include-Verzeichnissen mit CMake

Grundlegendes zum Header-Abhängigkeitsmanagement von CMake

CMake behandelt Header-Dateien zunächst außerhalb des Projekts Verzeichnis als externe Ressourcen. Dieses Verhalten kann zu Problemen bei der Abhängigkeitsverfolgung in generierten Projekten führen.

Lösung: Einschlussverzeichnisse festlegen

Um Header ordnungsgemäß einzuschließen, sind zwei Schritte erforderlich:

  1. Hinzufügen des Include Verzeichnis:

    • Verwenden Sie target_include_directories für aktuelle CMake-Versionen (z. B. 3.0):

      target_include_directories(test PRIVATE ${YOUR_DIRECTORY})
    • Für ältere CMake-Versionen (z. B. , 2.8.10 oder früher, ohne target_include_directories Support):

      include_directories(${YOUR_DIRECTORY})
  2. Header-Dateien in Zielquellenliste einschließen:

    Um Abhängigkeiten zu verfolgen, fügen Sie Header hinzu Dateien zur Quellliste für die Ziel:

    set(SOURCES file.cpp file2.cpp ${YOUR_DIRECTORY}/file1.h ${YOUR_DIRECTORY}/file2.h)
    add_executable(test ${SOURCES})

Beispiel: Header mit mehreren Zielen verknüpfen

So teilen Sie Header-Dateien über mehrere Ziele hinweg:

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

Das obige ist der detaillierte Inhalt vonWie konfiguriere ich Header-Include-Verzeichnisse in CMake richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn