Richtiges Hinzufügen von Include-Verzeichnissen mit CMake
In CMake ist die Verwaltung von Include-Verzeichnissen und Header-Abhängigkeiten für eine effektive Projektkompilierung von entscheidender Bedeutung. In diesem Artikel geht es um die Frage, wie CMake korrekt signalisiert werden kann, dass ein bestimmtes Verzeichnis Header enthält, die vom generierten Makefile einbezogen und verfolgt werden sollen.
Hinzufügen des Include-Verzeichnisses
Um ein Verzeichnis mit Headern einzuschließen, verwenden Sie den folgenden Befehl:
target_include_directories(test PRIVATE ${YOUR_DIRECTORY})
Wenn Sie eine ältere CMake-Version verwenden, die dies nicht unterstützt target_include_directories, verwenden Sie stattdessen die alten include_directories:
include_directories(${YOUR_DIRECTORY})
Header-Abhängigkeiten verfolgen
Um die Header-Abhängigkeiten zu verfolgen, müssen Sie die Header-Dateien zur Liste der Quelldateien hinzufügen für das aktuelle Ziel:
set(SOURCES file.cpp file2.cpp ${YOUR_DIRECTORY}/file1.h ${YOUR_DIRECTORY}/file2.h) add_executable(test ${SOURCES})
Auf diese Weise werden die Header-Dateien wie folgt angezeigt Abhängigkeiten im Makefile und anderen generierten Projektdateien, um deren Einbeziehung während der Kompilierung sicherzustellen.
Verwenden von Headern für mehrere Ziele
Um dieselben Header-Dateien über mehrere Ziele hinweg zu verwenden, befolgen Sie die folgenden Schritte Diese Schritte:
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})
Dieser Ansatz stellt sicher, dass alle Ziele Zugriff auf die erforderlichen Header haben und dass Header-Abhängigkeiten angemessen verfolgt werden. Indem Sie diese Schritte befolgen, können Sie Include-Verzeichnisse und Header-Abhängigkeiten in Ihren CMake-Projekten effektiv verwalten.
Das obige ist der detaillierte Inhalt vonWie verwaltet man Include-Verzeichnisse und Header-Abhängigkeiten in CMake richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!