2009-04-14 11 views
17

Ich möchte hinzufügen ~/include zu meinem Include-Pfad für alle Projekte bei der Verwendung von Xcode, etwas wie die Einstellung der Umgebungsvariablen CPLUS_INCLUDE_PATH in Linux. (Siehe here für die verwandte Linux-Frage.)Wie füge ich einen globalen Include-Pfad für xcode hinzu

Ist dies in Xcode möglich? Ich habe versucht, die obige Umgebungsvariable zu setzen, aber es scheint nicht zu funktionieren. (Und wenn es möglich ist, möchte ich auch verwandte Pfade wie LIBRARY_PATH und LD_LIBRARY_PATH festlegen.)

Antwort

14

Nach Apple's Docs, Sie sind in der Lage um eine Standardeinstellung für jede Build-Einstellung unter Verwendung einer environment variable bereitzustellen. In diesem Fall möchten Sie HEADER_SEARCH_PATHS setzen Aus irgendeinem Grund verstehe ich nicht, das funktioniert nicht. Es funktioniert gut für andere Erstellungseinstellungen (z. B. OTHER_CFLAGS), aber nicht für HEADER_SEARCH_PATHS. Sie können sehen, was der Variablenname für eine Einstellung ist, indem Sie den Recherche-Assistenten im Build-Einstellungsfenster öffnen (Buch-Button links unten).

Ein var, der funktioniert, ist USER_HEADER_SEARCH_PATHS, was genau das ist, was Sie wollen, funktioniert aber nur für Pfade in doppelten Anführungszeichen (nicht in spitzen Klammern.)

So

#include "bar.h" 

funktionieren würde, aber

#include <bar.h> 

würde nicht.

Der Build-Einstellungen plist aus dem obigen Artikel auf Umgebungsvariablen verwiesen werden so etwas wie dieses sollte am Ende der Suche:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>USER_HEADER_SEARCH_PATHS</key> 
    <string>~/test</string> 
</dict> 
</plist> 

Hoffnung, das hilft.

0

Fügen Sie Ihrem Xcode-Projekt die Build-Einstellung HEADER_SEARCH_PATHS hinzu. Diese Einstellung verwendet eine durch Leerzeichen getrennte Liste von Pfaden. Wenn der Pfad in einem Doppelstern endet (**), sucht er nach Unterverzeichnissen rekursiv. So für Ihr Beispiel zu beantworten, setzen HEADER_SEARCH_PATHS zu:

~/include 

Wenn Sie eine Reihe von Pfaden mussten schließen, können Sie es so etwas wie setzen würde:

~/include ~/my_other_includes/** /usr/local/special_frameworks/** 
+0

Ich möchte ein * global * Einstellung, so dass ich nicht den gleichen Weg für jeden Xcode-Projekt hinzufügen. –

+1

Ok, das hast du ursprünglich nicht gesagt. Wie Jesse sagte, können Sie auch Build-Einstellungen in Ihrer Umgebung vornehmen, und ich denke, das funktioniert für Sie. –

-3

Buildeinstellungen sind keine Umgebungsvariablen und Umgebungsvariablen sind keine Buildeinstellungen. Das Festlegen einer Umgebungsvariablen wirkt sich nicht auf Xcode-Builds aus.

USER_HEADER_SEARCH_PATHS ist eine Build-Einstellung, und indem Sie eine Liste von Pfaden einfügen, erreichen Sie, was Sie wollen. Wenn Sie den Wert im Inspektor eines Ziels festlegen, wird er nur für dieses Ziel wirksam (und nur für die von Ihnen festgelegten Buildkonfigurationen). Wenn Sie es im Projekt-Inspektor festlegen, wird es in allen Zielen im Projekt wirksam, es sei denn, ein Ziel überschreibt es mit einer eigenen Einstellung.

Für Pfade, die für Ihren Computer spezifisch sind, sollten Sie wahrscheinlich einen Quellbaum in den Xcode-Einstellungen definieren, z. B. LOCAL_INCLUDE = ~/include. Dann definieren Sie USER_HEADER_SEARCH_PATHS = $(LOCAL_INCLUDE) im Projekt. Auf diese Weise können andere Personen Ihr Projekt öffnen und es erstellen, indem Sie den Quelltextbaum auf den jeweiligen Speicherort der lokalen Includes auf dem Computer festlegen, ohne die Projektdatei ändern zu müssen.

+1

Das Setzen von Umgebungsvariablen wirkt sich auf Build-Einstellungen aus. In Apples Dokumenten steht das ganz klar und es funktioniert. –

+1

Ihre Behauptung stimmt nicht mit der praktischen Verwendung überein. -1 zum Raten. – ptoinson

0

Wählen Sie einfach eine .c oder .m-Datei in Ihrem „Gruppen & Files Tab“ und wählen Sie „Info erhalten“ durch RMB, dann unter „bauen“ Sie zusätzliche Compiler-Flags wie -I für weitere hinzufügen können searchpath umfassen.

1

Für jeden von euch gesegnet Lieblingen die dies zu erreichen, oder jede andere Hack von ~/.MacOSX/environment.plist, auch bekannt als globalen Umweltvariablen in diesem post-Berglöwe Welt Besuche EnvPane - An OS X preference pane for environment variables

versuchen

EnvPane ist ein Einstellungsbereich für Mac OS X 10.8 (Mountain Lion), mit dem Sie Umgebungsvariablen für alle Programme in grafischen und Terminalsitzungen festlegen können. Es stellt nicht nur die Unterstützung für ~/.MacOSX/environment.plist in Mountain Lion wieder her, es veröffentlicht auch sofort Ihre Änderungen an der Umgebung, ohne sich ab- und wieder anmelden zu müssen. Dies funktioniert sogar bei Änderungen durch manuelle Bearbeitung von ~/.MacOSX/environment.plist, nicht nur Änderungen, die über den Einstellungsbereich vorgenommen wurden.

enter image description here

Verwandte Themen