CMake find_path include-Verzeichnis-Präfix
Schreibe ich eine minimale Finden*.cmake für OpenNI. Finden Sie die header-Dateien, die ich schrieb
find_path(OPENNI_INCLUDE_PATH XnOS.h)
welche arbeitet wie erwartet (OPENNI_INCLUDE_PATH hat den Wert /usr/include/ni).
Jedoch, in meinen Unterlagen habe ich den Header mit
#include <ni/XnOS.h>
Wie kann ich loswerden der ni-Präfix, so kann ich schreiben
#include <XnOS.h>
Das problem mit den ersten gehören wird, die ein XnCppWrapper.h wird aufgenommen und diese Datei beinhaltet wieder einige Xn*.h Header, aber ohne das Präfix ni. Dies führt zu einem compiler-Fehler.
- Sind alle Dateien in der ersten form? Ich meine, Sie könnte passen Sie die OPENNI_INCLUDE_PATH variable werden die Eltern von dem, was zurückgegeben wird, die von find_path() und verwenden, statt.
- Ich denke, ich verstehe Ihren Vorschlag. Meinst du, ich sollte strap ni aus /usr/include/ni? Dies löst nicht das problem gehören.
- Ich meine, wenn ni ist in /usr/include dann OPENNI_INCLUDE_PATH sein sollte /usr/include anstelle von /usr/include/ni. Auf diese Weise brauchen Sie nicht zu erzeugen-Skript-Prozess, die änderungen, die Ihr c++ source-Dateien und Headern suchen beinhaltet, entfernen Sie den Pfad. Obwohl ich weiß, wenn das der Fall war /usr/include wird bereits in Ihr schließt also die OPENNI_INCLUDE_PATH wäre überflüssig.
- Zwar konnte man immer einstellen(OPENNI_INCLUDE_PATH ${OPENNI_INCLUDE_PATH};${OPENNI_INCLUDE_PATH}/..)
- Du hast Recht, ni ist in /usr/include. Leider hält es nicht ändern, was, wenn ich eine änderung OPENNI_INCLUDE_PATH /usr/include. In jedem Fall habe ich zu schreiben #include <ni/XnOs.h> in meinen Dateien, die Ergebnisse in der oben beschriebenen Zusammenstellung Fehler.
- Wenn /usr/include ist in Ihren enthält "#include <ni/XnOs.h" sollte nicht dazu führen, einen compile-Fehler. Auch wenn ich nicht viel Erfahrung mit gcc.
- Dies führt zu einem Kompilierungsfehler, da in der Datei XnOs.h ist wieder eine enthalten, die nicht den ni/ Präfix. Und der compiler beschwert sich, dass es kann die Datei nicht finden.
- Dann versuchen Sie, beide Wege, wie ich schon sagte, 3 Beiträge vor.
- Das war keine Lösung. Ich habe den gleichen Kompilierungsfehler.
- Wenn sowohl /usr/include/ni und /usr/include sind in Ihr beinhaltet, sollten Sie nicht erhalten eine Fehlermeldung. Etwas anderes muss passiert sein.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Immer der Pfad, den Sie verwenden, für
find_path
übereinstimmen, die in Ihrem#include
Aussagen.Wenn Sie wollen
#include <ni/XnOS.h>
Sie schreiben sollteWenn Sie stattdessen möchten
#include <XnOS.h>
verwendenNur sicher sein, um make up your mind, im Voraus, welche Sie verwenden möchten, und - stick, um es. Mischen von mehreren include-Pfade für die gleiche Bibliothek ist ein sicherer Weg, um nicht unnötig verkomplizieren das build-Umgebung.
find_path(OPENNI_INCLUDE_PATH XnOS.h)
und ich möchte den header mit#include <XnOS.h>
, aber es funktioniert nicht auf diese Weise.message
, um sicherzustellen, dass der zurückgegebene Wert vonfind_path
entspricht Ihren Erwartungen. Auch sicher sein, zu überprüfen, dass Ihre Ziele wirklich diesen Wert als include-Verzeichnis.