2013-01-03 10 views
45

Ich versuche eine C-Bibliothek in einem Objective-C Xcode-Projekt zu verwenden.Wie setze ich Include-Pfad in xcode Projekt ein

Die Bibliotheken Verzeichnisstruktur ist wie folgt:

-- include/ 
    |-- config.h 
    |-- lib/ 
    | |-- file1.h 
    | |-- file2.h 
    | |-- file3.h 

Die docs Bibliothek sagen file1.h aufzunehmen und file1.h umfasst file2.h und file3.h.

Ich bekomme "Datei nicht gefunden" Fehler für die Includes von Datei2.h und file3.h`. Sie werden von file1.h auf folgende Weise enthalten:

#include <lib/file1.h> 
#include <lib/file2.h> 

Ich las here, dass diese Winkel-Klammer den Präprozessor für Include-Dateien auf dem Weg von den INCLUDE-Umgebungsvariablen angegeben suchen anweisen, im Gegensatz zu der Suche in demselben Verzeichnis wie die Datei, die das # include enthält.

Also habe ich die Umgebungsvariable INCLUDE in Xcode hinzugefügt, indem ich auf Product-> Edit Scheme .. und setze es auf /the-whole-path-to/include/, aber ich bekomme immer noch die Datei nicht gefunden Fehler.

Die Dateien erfolgreich enthalten sind, wenn ich file1.h ändern sie wie folgt enthalten:

#include "file2.h" 

aber ich möchte lieber nicht, dass in der Bibliothek für jede Datei tun.

Wie kann ich das beheben?

+0

Siehe auch [Xcode Build-Einstellungsreferenz] (https://developer.apple.com/library/mac/documentation/DeveloperTools/Reference/XcodeBuildSettingRef/1-Build_Setting_Reference/build_setting_ref.html) auf Apple-Entwicklern. – jww

Antwort

45

Ich habe es herausgefunden.

Alles, was Sie tun müssen, ist die -I-Flag auf Ihrem Build hinzufügen unter „Sonstige C Flags“ -Einstellung

Also in Ihrem Ziel Build Einstellung Suche „Andere C Flags“ und fügen Sie -I/path-to-include/

Hier ein screenshot: enter image description here

+0

In Ihrem Fall, was war der Pfad zu Include. Ich frage das, weil mein Pfad über mein xcode-Projekt ist und ich habe versucht mit -I /../../ folder_to_include und es hat nicht funktioniert. Danke – xarly

+1

Siehe Kommentare unten; Es ist wahrscheinlich besser, XCode wissen zu lassen, was Sie tun, indem Sie es zu den Suchpfaden hinzufügen, anstatt in einer -I-Flagge zu bleiben. –

+0

@John Clements, danke, endlich habe ich deine Lösung benutzt, mit diesem Pfad und es funktioniert !, und du bist richtig, es ist sauberer. Danke – xarly

5

Obwohl dies funktioniert, ist es wahrscheinlich besser, es unter der Registerkarte "Suchpfade" zu setzen.

+1

Sorgen Sie für Anweisungen? –

+0

Anstatt es unter "Apple LLVM Compiler 4.1 - Sprache" zu setzen, setzen Sie es unter "Suchpfade". Es gibt einen speziell für Includes. – imallett

+0

Die Antworten sollten für sich stehen. Ihr scheint auf eine bestehende Antwort zu verweisen, aber da die Reihenfolge, in der sie angezeigt werden, sich ständig ändert, ist das eine schreckliche Idee. Ehrlich gesagt wäre ein Kommentar unter der vorhandenen Antwort angemessen für das, was Sie zu sagen haben. –

45

In der Version 5.0.2 von XCode ist es wahrscheinlich die beste Möglichkeit, dies dem Bereich "Suchpfade" des Ziels hinzuzufügen. Dies zu finden war (für mich) unglaublich unintuitiv. Hier ist, wie ich dazu gekommen bin, für diejenigen, die so verwirrt sind wie ich:

Klicken Sie in der linken Spalte auf das Project Navigator-Symbol (sieht wie ein Ordner aus). Klicken Sie dann auf den Projekteintrag. Dies sollte eine Reihe von Einstellungen im Hauptbereich anzeigen. Klicken Sie oben in diesem Bereich auf "Build Settings". Dies zeigt eine Reihe von Einträgen ... einschließlich eines namens "Search Paths" ... aber Sie können hier keinen Suchpfad hinzufügen! Das hat mich ziemlich zähneknirschen lassen solange, bis ich herausgefunden habe, dass der Name des Projekts oben in diesem Bereich ein Pulldown-Menü ist, wähle das Ziel aus diesem Pulldown-Menü und du kannst nun auf "Header Search Paths" doppelklicken und führen Sie die benötigten bearbeiten.

Oh, die Freude an der verrückten GUIs.

+3

Ich habe kein Problem, einen Suchpfad für das Projekt hinzuzufügen .. keine Notwendigkeit, auf das Ziel zu wechseln: http://i.imgur.com/Tcs36ec. png –

+0

@BrianGordon Ihr Bild zeigt speziell, dass das Ziel geändert wird, um zu projizieren. –

+1

@AntonK Richtig, es ist auf Projekt. Nicht Ziel. Das blaue Symbol bedeutet Projekt. JohnClements hat gesagt, dass es auf Ziel sein muss, damit diese Option erscheint. –

10

ich löste dies in Xcode 5.0.1 das Projekt erstellen Einstellungen (wie John und Ian oben erwähnt, aber ich kann nicht sagen, aufgrund < 50 rep).

Neue Info:

Beim Hinzufügen enthält zu Benutzer Header-Suchpfade, musste ich auch immer Benutzerpfade auf Ja Suche ändern.

Beim Hinzufügen von Includes zu (Nicht-User) Header-Suchpfaden ist die Suche nach Benutzerpfaden immer nicht erforderlich.

2

Entweder Sie können "Andere C-Flags" verwenden oder "HEADER_SEARCH_PATHS" verwenden, um die Include-Pfade anzugeben, um nach Header für Ihre ausführbare Datei zu suchen.

3

Versuchen Sie folgendes:

1 - wählen Sie Ihre Projektdatei in der linken Xcode Scheibe
2 - stellen Sie sicher, dass Ihr Projekt in der Mitte Xcode Bereich ausgewählt ist
3 - wählen Sie "Build Settings" an der Spitze die mittlere Xcode Scheibe
4 - sicher sein, "Alle" & "combined" ausgewählt werden nur unter "Build Settings"
5 - Type-Header in das Suchfeld direkt unter "Build-Einstellungen"

Sie sh Die Felder des Suchpfads sollten im mittleren Bereich angezeigt werden.

+0

Danke! Wie können Sie es jedoch global tun? –

+0

Warum sind die besten Antworten immer nicht die akzeptierten? :). – TatiOverflow

Verwandte Themen