2016-07-10 13 views
1

Ich habe dieses Bündel von # include-Anweisungen in der Datei:Ist es möglich, einen Pfad für #include zu verwenden?

#include "/Users/cooper/Desktop/MyLib/graph_api.h" 
#include "/Users/cooper/Desktop/MyLib/mst.h" 
#include "/Users/cooper/Desktop/MyLib/dfs.h" 
#include "/Users/cooper/Desktop/MyLib/bfs.h" 
#include "/Users/cooper/Desktop/MyLib/topo_sort.h" 
#include "/Users/cooper/Desktop/MyLib/scc.h" 
#include "/Users/cooper/Desktop/MyLib/bipartite.h" 
#include "/Users/cooper/Desktop/MyLib/dijkstra.h" 
#include "/Users/cooper/Desktop/MyLib/union_find.h" 
#include "/Users/cooper/Desktop/MyLib/my_string.h" 
#include "/Users/cooper/Desktop/MyLib/2d_array.h" 

Es könnte allerdings ändern, in der Zukunft, und ich werde eine Reihe von Zeilen zu aktualisieren. Ist es möglich, etwas wie

PATH = "/Users/cooper/Desktop/MyLib/ 
#include PATH + "2d_array.h" 

zu haben?

+6

Es ist nicht ein Teil des Makefile per se. Es ist eine Befehlszeilenoption. Makefile ist nur ein Mechanismus, um das Kompilieren zu verwalten. –

+1

Es sieht so aus, als ob Sie auf einem OSX-System arbeiten (nach den Pfaden), was bedeutet, dass Sie wahrscheinlich Xcode verwenden. In den Projekteinstellungen muss ein Platz vorhanden sein, an dem Sie Präprozessor-Einstellungen eingeben können, z. B. das Hinzufügen von Include-Pfaden. Wenn Sie das tun und '/ Users/cooper/Desktop/MyLib' hinzufügen, können Sie einfach' #include <2d_array.h> '. –

+2

[diese Antwort] (http://stackoverflow.com/questions/4743822/generate-include-file-name-in-a-macro) sollte für Sie nützlich sein. (Ich meine mit '#define PATH"/Benutzer/cooper/Desktop/MyLib/'und' # include PATH "2d_array.h" ') – mvidelgauz

Antwort

9

Normalerweise bietet der Compiler eine Option, mit der Sie Pfade hinzufügen können, in denen Header-Dateien von #include-Anweisungen nachgeschlagen werden.

z. für GCC hinzufügen

-I/Users/cooper/Desktop/MyLib 

zu Ihrem Compiler-Befehlszeile.


Diese Option könnte auch sein, in Ihrem IDE-Projekteinstellungen festgelegt werden, oder als Variable in Ihrem Build-System.

Verwandte Themen