2016-05-23 8 views
2

Während ich einen des Open-Source-C Orientieren ++ Projekt, das ich eine Zeile Code in der Wurzel CMakeLists.txt Datei gefunden:korrekte Art und Weise ist zu behandeln Pfade in CMake und C++ Projekten

include_directories(${PROJECT_SOURCE_DIR}/../include) 

Und dann in einer der Quelldateien gibt es diese Zeile:

#include "someFolder/someFile.h" 

someFolder in include Ordner gefunden wird.

ich einen anderen Ansatz in einem anderen Projekt gesehen habe, , in dem der CMakeLists.txt so etwas wie dies hat:

include_directories(${PROJECT_SOURCE_DIR}/../include/someFolder) 

dann in der Quelldatei:

#include "someFile.h" 

finde ich die zweite Ansatz sauberer als der erste. Welcher der beiden ist der richtige Weg oder die beste Vorgehensweise?

+0

erste ist mehr "linux-like", die ich finde schöner. 'someFolder' ist eine Art Kapselung für .h-Dateien. Es ist schwieriger, in Konflikte mit dem Namen .h zu fallen. –

+1

Nicht wirklich eine cmake Frage, wie es für jedes Build-Tool verallgemeinert werden könnte – Antonio

Antwort

3

Ich bevorzuge Unterverzeichnisse für Include-Dateien.

Der Hauptgrund dafür ist die Vermeidung von Dateinamenkonflikten. Wenn die Abhängigkeit A eine Datei mit dem Namen someFile.h hat und die Abhängigkeit B auch eine Datei mit dem Namen someFile.h enthält, liegt ein Problem vor, da der Compiler nicht weiß, welche Komponente enthalten sein soll.

Aus dem gleichen Grund sollten Sie Namespaces verwenden, sollten Sie auch Unterverzeichnisse für Include-Dateien verwenden, wenn möglich.

0

Nun, das ist sehr Meinung basiert, meiner Meinung nach ...

ich den früheren Ansatz bevorzugen, vor allem bei größeren Bibliotheken. Es zeigt die logische Struktur der Bibliothek wie von den Autoren beabsichtigt.

Verwandte Themen