2016-04-22 10 views
1

Ich habe ein Xcode-Projekt P2, die Teil eines Arbeitsbereichs ist, wo ich ein anderes Projekt haben P1.Warum kompiliert mein Xcode-Projekt nur, wenn es sich in einem Arbeitsbereich befindet?

Wenn ich P1 baue, erstellt es ein Cocoa Touch Framework. In P2, habe ich das von P1 erstellte Framework unter Allgemein -> Link Frameworks und Bibliotheken -> Wählen Sie P1.framework.

Dann baue ich das P2 Projekt und es kompiliert erfolgreich mit dem P1.framework darin integriert. Also, alles gut damit.

Anstatt nun den Arbeitsbereich zu öffnen und den Aufbau der P2 Projekt von Arbeitsplatz öffne ich direkt die P2 Projekt durch p2.xcodeproj Datei klicken. Ich kann die p1.framework Datei darin sehen.

Aber jetzt, wenn ich versuche P2 zu bauen, gibt es Fehler:

framework not found P1. clang: error: linker command failed with exit code 1 (use -v to see invocation).

Kann mir jemand helfen zu verstehen, warum P2 Fehler gibt, wenn sie direkt aus p2.xcodeproj Datei geöffnet?

Antwort

2

Für die p1.framework sein verknüpfbaren richtig, das Projekt, bei dem p1.framework von verwiesen wird, muss sichtbar sein.

Dies liegt wahrscheinlich daran, dass Sie ursprünglich die Xcode-Standardbenutzeroberfläche verwendet haben, um das Projekt p1.framework aus dem Projekt P1 in Ihrem Arbeitsbereich auszuwählen. Xcode verweist nicht direkt auf p1.framework, sondern über das P1 Projekt. Dies ist nützlich, weil Sie damit P1 so oft ändern können, wie Sie möchten (Ändern der Build-Ziele usw.), und anderen Projekten die Verwendung des p1.framework zulässt.

Eine einfachere Analogie könnte sein, an Ordner-Aliase zu denken. Es ist, als ob Sie eine Datei über einen Ordneralias referenzieren und dann diesen Ordner löschen. Natürlich erscheinen Fehler.