2012-10-25 4 views
11

Ich habe ein Include-Verzeichnis in meinem Home-Verzeichnis hinzugefügt. Ich kann "ls -l ~/include" aus dem Build-Verzeichnis ausführen. Ich habe dieses Verzeichnis sowohl in "Header Search Path" als auch in "User Header Search Path" hinzugefügt. An beiden Stellen habe ich sowohl mit rekursiven als auch mit rekursiven Methoden versucht. Aber xcode 4.5.1 kann in keiner Situation die erste angegebene Header-Datei finden.xcode 4.5.1. Header Suchpfad funktioniert nicht, <Verzeichnis/Datei.h> Datei nicht gefunden

Es wird im Quellcode calls.m angegeben als:

#include <directory/file.h> 

ich einen bekommen „lexikalisches oder Preprocessor Thema‚Verzeichnis/file.h‘Datei nicht gefunden.“

Aber wenn xcodebuild von cli ausgeführt wird, hat es keine Probleme, was auch immer die Quelle zu bauen.

Ich habe viele der Vorschläge im Internet gefunden versucht

  • Putting a sind in/usr/om mein Laufwerk
  • einen Index für das Projekt Hinzufügen, Hinzufügen von Dateien ohne Kopie und kein „In den Ziel "markiert.
  • Neustart xcode.
  • Angabe aller spezifischen Pfade.

Aber immer noch nicht gehen.

Was ist das Problem? Fehler in xcode?

Antwort

18

Ich hatte gerade ein ähnliches Problem, und es war, weil Leerzeichen in dem Pfad waren, den ich für den Header Search Path definierte. Zum Beispiel, ich war die Definition der folgenden als Suchpfad:

$(SRCROOT)/Frameworks/Headers

, die auf die folgende erweitert geführt wurde:

/Users/skoota/Documents/Xcode Projects/My App/Frameworks/Headers

wie Sie sehen können, gibt es Räume innerhalb der Pfad (die nicht sofort offensichtlich sind, wie Sie die Variable $(SRCROOT) verwenden) und der Compiler schätzt die Leerzeichen nicht besonders. Ich löste dieses Problem, indem Sie den Suchpfad zu diesem Wechsel:

"$(SRCROOT)"/Frameworks/Headers

(die Anführungszeichen um $(SRCROOT) beachten, welche die Räume entweicht). Dies nun erweitert, um:

"/Users/skoota/Documents/Xcode Projects/My App"/Frameworks/Headers

die einwandfrei funktioniert, obwohl sieht ein wenig seltsam mit den eingebetteten " Mark. Das hat eine Weile gedauert, bis ich es herausgefunden habe, also hoffentlich hilft es!

4

Dies tritt normalerweise auf, wenn sich im Pfad des Verzeichnisses Leerzeichen befinden. Um dieses Problem zu umgehen, verwenden Sie doppelte Anführungszeichen um den Pfad.

Angenommen, Sie möchten Ihr Projektverzeichnis verwenden, dann sollten Sie Folgendes verwenden: $PROJECT_DIR. Aktivieren Sie Recursive, wenn Sie auch innerhalb der Ordner suchen möchten.Alternativ können Sie $(SRCROOT)

+1

nicht bekommen, das es war kurz und es half mir, danke Kunal Ive hatte damit für eine Weile gekämpft. – Arbitur

Verwandte Themen