2013-02-15 6 views
10

Ok, hier ist, was ich versucht habe.Zwei Ziele, zwei Header-Dateien mit dem gleichen Namen, wie man jeden Header für das richtige Ziel verwendet?

Ich habe die Header-Dateien in zwei separaten Verzeichnissen IRL. Sie sind gleich benannt, befinden sich jedoch an zwei verschiedenen Orten.

Ich möchte nur die relevanten Header-Datei für jedes Ziel enthalten. Sagen wir zur Erleichterung der Erklärung, dass die Header-Datei "Config.h" heißt.

So habe ich:

$ {PRODUCT_DIR} /Header1/Config.h

und

$ {} PRODUCT_DIR /Header2/Config.h

Diese Dateien erscheinen in der LHS von Xcode auch in zwei verschiedenen Gruppen (Heade r1 und Header2, die auf die IRL-Ordner zeigen).

Also jetzt alles, was ich tun muss, ist Xcode wählen Sie die richtige aus dem richtigen Ordner für jedes Ziel.

Target1

und

Target2

Ich habe versucht, jedes Ziel den Pfad zu dem User Header Search Paths zum Hinzufügen, aber es ist immer noch die falsche Wahl. Ich habe auch versucht, "Immer Benutzerpfade durchsuchen" zu aktivieren, was auch keinen Effekt zu haben scheint.

Also meine Frage ist, ist das, weil sie im Projektverzeichnis sind? Oder liegt es daran, dass sie sich in Xcode im Dateimanager auf der LHS befinden, also kopiert Xcode sie in den Erstellungsordner?

Das Merkwürdige ist, scheint es, in alphabetischer Reihenfolge die Header-Dateien aus dem Ordner mit dem Nachnamen zu wählen ...

In früheren Versionen von Xcode Ich bin sicher, dass Sie, welche Header kopieren in den Build wählen könnte Mappe.

Wie auch immer .. weiß jemand, wie ich das beheben kann, damit ich die richtige Header-Datei für das Ziel auswählen kann?

Vielen Dank.

+0

Ich bin mir nicht sicher, aber was ist mit bedingten Import? –

+0

Das ist der Backup-Plan. :) Aber es wird eine Last mehr Schritte als auf diese Weise hinzufügen. Ich bin sicher, das sollte möglich sein. –

+0

1. Eigentlich kann ich nicht verstehen, warum Sie Probleme mit "Header Search Paths" haben. Versuchen Sie, diese Header aus dem Projekt auszuschließen, und verwenden Sie keine "**" rekursiven Suchpfade. 2. Normalerweise verwende ich andere "include" mit "ifdef else". So können Sie jedem Ziel eine beliebige globale Variable hinzufügen und überprüfen, was Sie hinzufügen müssen (Beispiel: "ifdef target1 #include" header1.h "else # include" header2.h "endif;). Es hängt also von Ihren Anforderungen ab. – Jlexyc

Antwort

8

Das Problem, das ich hatte war 2-fach:

  1. Sie müssen die Header-Dateien aus dem Projekt entfernen. Wenn sie sich im Dateimanager in Xcode befinden, werden sie automatisch in das Projekt aufgenommen.

  2. Sie müssen relative Pfade zu Ihren Ordnern in "User Header Search Paths" verwenden. Ich benutzte ${PROJECT_DIR}/path/to/header/folder, die den richtigen Pfad gab, aber nicht richtig zu funktionieren schien.Das Ändern der Eingabe zu ./path/to/header/folder hat stattdessen gut funktioniert.

+0

Was passiert, wenn ich die Header nicht aus dem Projekt entfernen kann, weil ich ein Framework erstelle und es sich um öffentliche Header handelt? –

0

Ich habe 4 Ziele in 1 proyect und mehr als 40 Header, die beste Lösung in XCode 8 ich die beste Lösung denken, ist das folgende Tag ändern:

Always Search user Paths 

Um ja ein alles war Gut für mich: enter image description here

Verwandte Themen