2009-10-29 9 views
26

Ich erstelle eine statische Lib auf Mac OS X für einen unserer Kunden, sowie eine kleine cmd line App, um die statische lib zu testen. Das cmd line-Projekt hat 2 zusätzliche Bibliothekssuchpfade, was bedeutete, dass ich im Release-Modus mit der Debug-Version verlinkte und fast verrückt wurde, also versuchte ich, diese beiden Pfade loszuwerden, aber ich konnte nicht finden, wo sie spezifiziert wurden . Ich habe in der Projektinfo gesucht, aber es stellte sich heraus, dass sie in den Zielinformationen angegeben wurden.Xcode: Projekteinstellungen vs. Zieleinstellungen

Ich verstehe die Unterscheidung nicht ?! Warum gibt es 2 Einstellungen, die im Wesentlichen gleich sind ?! Kann mir bitte jemand aufklären?

Antwort

39

Ein Projekt kann mehrere Ziele enthalten. Zum Beispiel hat eine App, die ich schreibe vier - die App selbst, ein Schnellansicht-Plugin, ein Framework und ein Bundle, das Mac OS 10.6-spezifische Funktionalität enthält, die dynamisch geladen werden kann.

Projekteinstellungen gelten für jedes einzelne Ziel im Projekt. Jedes Ziel kann dann einzelne Einstellungen überschreiben, wenn dies erforderlich ist. Beispiel: Das Ziel-SDK meines Projekts ist auf 10,5 festgelegt, das Ziel-SDK des 10.6-spezifischen Pakets ist jedoch auf 10,6 festgelegt.

In einigen Fällen sind einige Einstellungen nicht sinnvoll, um in den Projekteinstellungen zu sein - einer davon sind vermutlich Suchpfade.

+0

Korollarfrage: Wie soll ich die statische Bibliothek in das cmd line App-Projekt aufnehmen? Per Drag-n-Drop in die Liste der Quelldateien? Oder von den Build-Einstellungen? – vectorizor

+4

@iKenndac, können Sie erklären, warum "einige Einstellungen in Projekteinstellungen nicht sinnvoll sind"? Ich habe nur ein Ziel in jedem Projekt und bin immer noch verwirrt über die Festlegung der Suchpfade. – topace

8

Sie haben oft mehrere Ziele in einem Projekt - zum Beispiel haben Sie vielleicht ein Framework-Projekt mit einem Ziel zum Erstellen als dynamisches .framework-Paket und ein Ziel zum Erstellen einer statischen lib. Oder Ihre App verfügt möglicherweise über ein Ziel zum Erstellen der App selbst und über ein Ziel zum Erstellen eines Hilfs-Befehlszeilentools, das installiert werden muss.

Wo immer es möglich ist, würde ich vorschlagen, die Einstellungen auf der höchsten Ebene zu ändern (in den Projekteinstellungen und gleichzeitig Debug-& Release-Konfigurationen zu ändern) und die Zieleinstellungen nur bei Bedarf anzupassen. Noch besser, verschiebe so viele Einstellungen wie möglich in xcconfig-Dateien, was eine deutlich explizitere Art der Angabe deines Build-Setups zu sein scheint.