2010-08-06 12 views
48

(Wenn Sie diese Frage zu Referenzzwecken eingeben, antworte ich sofort)Systemkopf-Suchpfad zu Xcode hinzufügen

Wie fügt man Header-Suchpfade zu Xcode hinzu? Vor allem, wenn mit dieser Syntax einschließlich:

include <myheader.h> 
  1. Pfad wie System-Header für alle Projekte global Hinzufügen.
  2. Pfad nur zu einem bestimmten Projekt hinzufügen.

Antwort

94

Wir haben zwei Möglichkeiten.

  1. Betrachten Sie Einstellungen -> Standorte -> "Source Trees" in Xcode-Präferenz. Ein hier hinzugefügter Pfad ist ein Pfad auf Systemebene und für alle Projekte verfügbar.

  2. Set HEADER_SEARCH_PATHS Parameter in Build-Einstellungen auf Projektinfo. Ich habe "${SRCROOT}" hier ohne Rekursion hinzugefügt. Diese Einstellung funktioniert für die meisten Projekte gut.

Über 2. Option:

Xcode verwendet Clang, die GCC-Set kompatibel Befehl hat. GCC has an option -Idir, die System Header Suchpfade hinzufügt. Diese Option ist unter HEADER_SEARCH_PATHS in der Xcode-Projekt-Build-Einstellung verfügbar.

Die zu dieser Einstellung hinzugefügte Pfadzeichenfolge darf jedoch keine Leerzeichen enthalten, da die Option unverändert an den Shell-Befehl übergeben wird.

Aber einige OS X Benutzer (wie ich) können ihre Projekte auf Pfad einschließlich Whitespace setzen, die sollte Escape sein. Sie können es wie /Users/my/work/a\ project\ with\ space entkommen, wenn Sie es manuell eingeben. Sie können sie auch mit Anführungszeichen ausschließen, um Umgebungsvariablen wie "${SRCROOT}" zu verwenden.

Oder verwenden Sie einfach ., um das aktuelle Verzeichnis anzugeben. Ich habe diesen Trick im Quellcode von Webkit gesehen, aber ich bin nicht sicher, ob das aktuelle Verzeichnis beim Erstellen auf das Projektverzeichnis gesetzt wird.

Die ${SRCROOT} ist vordefinierten Wert von Xcode. Dies bedeutet Quellverzeichnis. Sie können weitere Werte in Reference document finden.

PS. Eigentlich müssen Sie keine Klammern {} verwenden. Ich bekomme dasselbe Ergebnis mit $SRCROOT. Wenn Sie den Unterschied kennen, lassen Sie es mich bitte wissen.

+1

Beachten Sie auch, dass $ {SRCROOT} das Verzeichnis ist, das das Verzeichnis .xcodeproj enthält, * nicht * das Verzeichnis, in dem Xcode Ihre Quelldateien ablegt (zumindest auf meinem Xcode 4.6.3). Um zu meiner Quelle zu gelangen, musste ich eine Ebene tiefer gehen. –

+3

Der Unterschied, mit oder ohne Klammern, ist, dass der Pfad mit geschweiften Klammern Leerzeichen enthalten kann. –

+2

LIEBE DICH FÜR DIE BACKSLASH TRICK –

2

Um Anführungszeichen nur für die Vollständigkeit zu verwenden.

"/Users/my/work/a project with space"/**

Wenn nicht rekursiv, die auf Projektebene Einstellungen im Zusammenhang Antwort des /**

+4

Stellen Sie sicher, dass geschweifte Klammern für Variablen verwendet werden, wie oben gezeigt, anstatt die runde Variante. Letzteres scheint Parsing-Probleme bei Projekten mit Leerzeichen zu verursachen. –

10

Follow-up zu Eonil entfernen. Wenn das Ziel ausgewählt und die Registerkarte "Buildeinstellungen" ausgewählt ist, ist möglicherweise kein Eintrag unter Suchpfade für Headersuchpfade vorhanden. In diesem Fall können Sie in der Suchleiste von "Basic" zu "All" wechseln und Header Search Paths werden im Bereich Search Paths angezeigt.

3

Obwohl diese Frage eine Antwort hat, habe ich es anders gelöst, als ich das gleiche Problem hatte. Ich hatte dieses Problem, wenn ich Ordner mit der Option Create Folder references kopierte; dann funktionierte die obige Lösung, den Ordner zum Buildpfad hinzuzufügen. Wenn der Ordner jedoch mit der Option Create groups for any added folder hinzugefügt wurde, wurden die Header automatisch übernommen.

Verwandte Themen