Einschlussverzeichnisse in CMake verstehen
Bei der Arbeit mit Header-Dateien in CMake ist die Sicherstellung einer ordnungsgemäßen Einbindung und Abhängigkeitsverfolgung von entscheidender Bedeutung. CMake unterscheidet zwischen Header-Dateien innerhalb und außerhalb des Projekts. Um Header-Dateien korrekt einzubinden, befolgen Sie diese Schritte:
Fügen Sie das Include-Verzeichnis hinzu:
Um ein Verzeichnis anzugeben, das die einzuschließenden Header-Dateien enthält, Verwenden Sie die Funktion target_include_directories:
target_include_directories(test PRIVATE ${YOUR_DIRECTORY})
Für ältere CMake-Versionen ohne target_include_directories verwenden Sie include_directories stattdessen:
include_directories(${YOUR_DIRECTORY})
Header zu Quelldateien hinzufügen:
Um Abhängigkeiten zu verfolgen und genaue Makefiles zu generieren, fügen Sie die Headerdateien zu den hinzu Liste der Quelldateien für das aktuelle Ziel:
set(SOURCES file.cpp file2.cpp ${YOUR_DIRECTORY}/file1.h ${YOUR_DIRECTORY}/file2.h) add_executable(test ${SOURCES})
Befolgen Sie diese Schritte erkennt CMake die angegebenen Header als Teil des Projekts und bezieht sie in seine Abhängigkeitsverfolgung ein, um eine ordnungsgemäße Verarbeitung in generierten Ausgabedateien wie Makefiles und Projektdateien für IDEs sicherzustellen.
Verwendung von Headern über mehrere Ziele hinweg :
Um Header über mehrere Ziele hinweg wiederzuverwenden, ziehen Sie den folgenden Ansatz in Betracht:
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})
Dies Die Methode stellt sicher, dass sowohl Bibliotheks- als auch ausführbare Ziele die angegebenen Header enthalten und ihre Abhängigkeiten korrekt verfolgen.
Das obige ist der detaillierte Inhalt vonWie verwalte ich Include-Verzeichnisse und Header-Dateien in CMake richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!