c/c++ : header-Datei nicht gefunden
Einige header-Dateien vorhanden sind, die in /src/dir1/
(zB: a.h
, b.h
, c.h
etc). Meine Quelldatei ist in /src/dir2/file.cpp
. Ich habe einige header-Dateien, die vorhanden sind, in /src/dir1/
aber während der Kompilierung auf, ich habe Fehler, wie header file not found
.
Dann änderte ich den include-Pfad wie #include "../src/dir1/a.h"
, dann Fehler Weg ist in file.cpp
aber ich bekomme not found
Fehler in den Header-Dateien, die vorhanden sind, in /src/dir1
. Weil ich enthalten die header-Datei sagen a.h
, dass a.h
einige andere header-Dateien, die vorhanden sind, in /src/dir1/
(sagen b.h
und c.h
präsentieren in a.h
).
Wie Sie die header-Datei (a.h
) in /src/dir2/file.cpp
so dass Sie sollten nicht Fragen, zu ändern, der include-Pfad in den header-Dateien, die vorhanden sind, in /src/dir1/
?
Hinweis: ich bin mit scons
zu bauen.
"include "../dir1/a.h"
oder #include "../..src/dir1/a.h"
um die Datei zu suchen. Aber die Einbettung ..
im include-Pfaden ist eine schlechte Idee (wie die Verwendung absoluter Pfadnamen). Verwenden Sie entweder #include "a.h"
oder #include "dir1/a.h"
und eine entsprechende -I
Kommandozeilen-option beim kompilieren.InformationsquelleAutor NAVEEN | 2013-07-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie fügen Sie die Verzeichnisse zu den include-Datei suchen, Pfad, über den
-I
Befehl Linie parameter dergcc
:Die
-I
option ist erforderlich, die POSIX;gcc
implementiert. Ich weiß nicht von einem compiler, wo es nicht unterstützt wird — AFAIK sogar MSVC unterstützt-I
(vielleicht als/I
).InformationsquelleAutor Joni
Es nicht gefunden, weil es nicht da ist. Sie haben eine zusätzliche Ebene der Dereferenzierung. Eine Datei in "/src/foo/" würde eine Datei in "/src/bar/in" mit "include ../bar/the_file"
In anderen Worten, in deinem Beispiel gibt es kein "../src/" relative dir1 oder dir2. Die Beziehung ist "dir1/../dir2" oder "verzeichnis1/../../src/dir2"
Sehen, für sich selbst, machen verz1 das aktuelle Verzeichnis (chdir /src/dir1) und vergleichen Sie den Unterschied zwische "ls .." und "ls ../src". Die zweite ls funktioniert nicht, aber die erste wird.
Sinn? hoffe, das hilft
InformationsquelleAutor Ben Brammer
SCons FAQ:
Wie bekomme ich SCons zu finden, meine #include-Dateien?
Wenn Ihr Programm #include-Dateien in verschiedenen Verzeichnissen, SCons muss irgendwie erzählt werden, in welchen Verzeichnissen Sie sollten sich für die #include-Dateien. Sie tun dies, indem Sie die CPPPATH variable zu der Liste der Verzeichnisse, die enthalten .h-Dateien, die Sie suchen möchten:
SCons wird Sie der Zusammenstellung hinzufügen Befehl Zeile(N) der Recht -I-Optionen, oder was auch immer ähnliche Möglichkeiten, die geeignet sind, den C oder C++ - compiler du verwendest. Das macht Ihr SCons-basierten build-Konfiguration tragbar.
Beachten Sie insbesondere, dass Sie sollten nicht legen Sie die include-Verzeichnisse direkt in den CCFLAGS variable, wie Sie vielleicht zunächst erwarten:
Dadurch wird das Programm ordnungsgemäß kompiliert, aber SCons wird nicht die Abhängigkeiten in der "inc" - Unterverzeichnis, und das Programm wird nicht wieder aufgebaut werden, wenn alle diese #include-Dateien ändern.
InformationsquelleAutor LogicG8