So legen Sie den Include-Pfad im xcode-Projekt fest

Lesezeit: 4 Minuten

Ich versuche, eine C-Bibliothek in einem Objective-C-Xcode-Projekt zu verwenden.

Die Verzeichnisstruktur der Bibliotheken ist wie folgt:

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

Die Dokumentation der Bibliothek besagt, dass file1.h enthalten ist, und file1.h enthält file2.h und file3.h.

Ich erhalte “Datei nicht gefunden”-Fehler für die Includes von file2.h und file3.h`. Sie werden von file1.h auf folgende Weise eingebunden:

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

ich lese hier dass diese spitzen Klammern den Präprozessor anweisen, entlang des durch die Umgebungsvariable INCLUDE angegebenen Pfads nach Include-Dateien zu suchen, anstatt im selben Verzeichnis wie die Datei zu suchen, die das #include enthält.

Also habe ich die Umgebungsvariable INCLUDE in Xcode hinzugefügt, indem ich zu Product->Edit Scheme.. gegangen bin und sie auf gesetzt habe /the-whole-path-to/include/ Ich erhalte jedoch immer noch die Fehlermeldung „Datei nicht gefunden“.

Die Dateien werden erfolgreich eingebunden, wenn ich file1.h so ändere, dass sie wie folgt eingebunden werden:

#include "file2.h"

aber ich würde das lieber nicht für jede Datei in der Bibliothek tun.

Wie kann ich das beheben?

In Version 5.0.2 von XCode ist der beste Weg, dies zu erreichen, wahrscheinlich, es zum Bereich “Suchpfade” des Ziels hinzuzufügen. Das zu finden war (für mich) unglaublich nicht intuitiv. Hier ist, wie ich dazu gekommen bin, für diejenigen, die so verwirrt sind wie ich:

Klicken Sie in der linken Spalte auf das Symbol Projektnavigator (sieht aus wie ein Ordner). Klicken Sie dann auf den Projekteintrag. Dies sollte eine Reihe von Einstellungen im Hauptbereich anzeigen. Klicken Sie oben in diesem Bereich auf “Einstellungen erstellen”. Dies zeigt eine Reihe von Einträgen … einschließlich eines namens Suchpfade … aber Sie können hier keinen Suchpfad hinzufügen! Das hat mich ziemlich lange mit den Zähnen knirschen lassen während, bis ich herausfand, dass der Name des Projekts oben in diesem Bereich ein Pulldown-Menü war; wählen Sie die Ziel aus diesem Pulldown, und Sie sollten jetzt in der Lage sein, auf “Header-Suchpfade” zu doppelklicken und die erforderliche Bearbeitung durchzuführen.

Oh, die Freude an verrückten GUIs.

  • Ich habe kein Problem damit, einen Suchpfad für das Projekt hinzuzufügen. Ich muss nicht zum Ziel wechseln: i.imgur.com/Tcs36ec.png

    – Lappen

    29. Januar 2014 um 20:31 Uhr

  • @BrianGordon Ihr Bild zeigt speziell, dass das Ziel in ein Projekt geändert wird.

    – Anton K

    13. Mai 2014 um 0:09 Uhr

  • @AntonK Richtig, es ist im Projekt. Nicht Ziel. Das blaue Symbol bedeutet Projekt. John Clements sagte, dass es zielgerichtet sein muss, damit diese Option erscheint.

    – Lappen

    15. Mai 2014 um 10:42 Uhr

  • “Das hat mich eine ganze Weile mit den Zähnen knirschen lassen, bis ich herausgefunden habe, dass der Name des Projekts oben in diesem Bereich ein Pulldown ist.” hilft mir. Vielen Dank

    – mxi1

    16. Oktober 2015 um 5:36 Uhr

Herausgefunden.

Alles, was Sie tun müssen, ist das Flag -I zu Ihrer Build-Einstellung unter “Andere C-Flags” hinzuzufügen.

Suchen Sie also in der Build-Einstellung Ihres Ziels nach “Andere C-Flags” und fügen Sie sie hinzu -I/path-to-include/

Hier ist ein Screenshot:
Geben Sie hier die Bildbeschreibung ein

  • Was war in Ihrem Fall die pathToInclude. Ich frage das, weil mein Pfad über meinem xcode-Projekt liegt und ich es mit -I/../../folder_to_include versucht habe und es nicht funktioniert hat. Vielen Dank

    – xarly

    16. Januar 2014 um 20:43 Uhr


  • Siehe Kommentare unten; Es ist wahrscheinlich besser, XCode wissen zu lassen, was Sie tun, indem Sie es zu den Suchpfaden hinzufügen, anstatt ein -I-Flag einzufügen.

    – John Clemens

    16. Januar 2014 um 22:38 Uhr

  • @ John Clements, danke, endlich habe ich Ihre Lösung mit diesem Pfad verwendet und es funktioniert! Und Sie haben Recht, es ist sauberer. Vielen Dank

    – xarly

    17. Januar 2014 um 20:36 Uhr


  • Ich konnte keinen Pfad wie -I$(JAVA_HOME)/include verwenden, wie kann ich das erreichen?

    – dg_no_9

    5. Februar 2014 um 7:27 Uhr

  • Warum ist diese Lösung besser als die Einstellung der Header-Suchpfad?

    – Trojaner

    27. April 2015 um 6:58 Uhr

Versuche dies:

1 – Wählen Sie Ihre Projektdatei im linken Xcode-Bereich aus
2 – Stellen Sie sicher, dass Ihr Projekt im mittleren Xcode-Bereich ausgewählt ist
3 – Wählen Sie oben im mittleren Xcode-Bereich “Build Settings” aus
4 – Stellen Sie sicher, dass „Alle“ und „Kombiniert“ direkt unter „Build-Einstellungen“ ausgewählt sind.
5 – geben Sie Header in das Suchfeld direkt unter “Build-Einstellungen” ein

Sie sollten die Suchpfadfelder im mittleren Bereich sehen, die zur Bearbeitung bereit sind.

Matts Benutzeravatar
Matt

Ich habe dies in Xcode 5.0.1 mithilfe der Projekt-Build-Einstellungen gelöst (wie John und Ian oben angemerkt haben, aber ich kann aufgrund von <50 Wiederholungen keinen Kommentar abgeben).

Neue Infos:

Beim Hinzufügen von Includes zu Benutzer Kopfzeilen-Suchpfade musste ich auch Benutzerpfade immer durchsuchen auf Ja ändern.

Beim Hinzufügen von Includes zu (Nicht-Benutzer-) Header-Suchpfaden ist „Immer Benutzerpfade durchsuchen“ nicht erforderlich.

Obwohl dies funktioniert, ist es wahrscheinlich besser, es stattdessen auf der Registerkarte “Suchpfade” abzulegen.

  • Möchtest du eine Wegbeschreibung geben?

    – Slipp D. Thompson

    30. September 2013 um 19:27 Uhr

  • Anstatt es unter „Apple LLVM-Compiler 4.1 – Sprache“ zu platzieren, platzieren Sie es unter „Suchpfade“. Es gibt einen speziell für Includes.

    – imallett

    6. Oktober 2013 um 20:05 Uhr

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

    – Pascal Cuoq

    29. November 2013 um 14:43 Uhr


Benutzeravatar von parasrish
paraschisch

Sie können entweder “Other C Flags” oder “HEADER_SEARCH_PATHS” verwenden, um die Include-Pfade anzugeben, um nach Headern für Ihre ausführbare Datei zu suchen.

  • Möchtest du eine Wegbeschreibung geben?

    – Slipp D. Thompson

    30. September 2013 um 19:27 Uhr

  • Anstatt es unter „Apple LLVM-Compiler 4.1 – Sprache“ zu platzieren, platzieren Sie es unter „Suchpfade“. Es gibt einen speziell für Includes.

    – imallett

    6. Oktober 2013 um 20:05 Uhr

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

    – Pascal Cuoq

    29. November 2013 um 14:43 Uhr


Benutzeravatar von Blisterpeanuts
Blasenerdnüsse

Im Jahr 2021, Xcode v. 12.4, scheint die Lösung zu sein:

Projekt->Ziele->Allgemein->”Alle Quelldateien auf Includes scannen”-> auf “Ja” setzen

Das hat bei mir funktioniert.

Dies kann jedoch nach hinten losgehen, wenn Sie mehrere Versionen einer bestimmten .h-Datei haben, wahrscheinlich keine gute Praxis, aber es ist möglich, wenn Sie viele Unterverzeichnisse mit eigenen Miniprojekten und ähnlich benannten Include-Dateien haben.

1414640cookie-checkSo legen Sie den Include-Pfad im xcode-Projekt fest

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy