XCode4 verbindet kein neu kompiliertes statisches Bibliotheks (abhängiges) Projekt

8

Ich habe ein Projekt in XCode4 mit einem abhängigen Projekt (ist zufällig das Kal-Projekt).

Wenn ich das Kal-Projekt innerhalb von XCode aktualisiere, führe das übergeordnete Projekt aus (dies geschieht im selben Arbeitsbereich btw), es sieht so aus, wie XCode das modifizierte Kal-Projekt kompiliert, aber nicht verbindet zu der neu kompilierten Datei libKal.a.

Ich führe eines der Standard-übergeordneten Projektschemata aus. Aus den Logs kann ich ersehen, dass beim Ausführen das abhängige Projekt erstellt wird, bevor das übergeordnete Projekt erstellt wird. Aber die einzige Möglichkeit, das Elternprojekt dazu zu bringen, meine Änderungen zu verwenden, ist, wenn ich das Produkt libKal.a als zu verknüpfende Bibliothek unter "Link Binary with Libraries" des übergeordneten Build-Ziels erneut hinzufüge.

Vielleicht Hinweise:  - Ich benutze LLVM,  - Ich habe das Flag -all_load eingeschaltet.

    
Jae Kwon 01.06.2011, 17:52
quelle

5 Antworten

0

Was passiert, wenn Sie Folgendes versuchen:

  • Reinigen
  • Neu erstellen

Das funktioniert normalerweise in solchen Fällen für mich ...

    
Dr.Kameleon 14.04.2012 18:04
quelle
0

Überprüfen Sie Ihre Schemas. Stellen Sie für die Anwendung, die von einer Bibliothek abhängt, sicher, dass die Abhängigkeit jedes Mal erstellt wird. Ich habe gelesen, das Schema sollte dieses Update schon haben, aber manchmal nicht. Sie können hier ein Beispiel sehen ...

Ссылка

Grundsätzlich bearbeiten Sie das Schema für die Anwendung und klicken Sie auf das Element Erstellen oben links. Sie sehen jedes Ziel, das als Teil dieses Builds ausgeführt wird. Wenn das Ziel für eine Abhängigkeit nicht angezeigt wird, können Sie es hinzufügen. Stellen Sie dann sicher, dass Ihre Anwendung zuletzt aufgelistet ist, damit alle Abhängigkeiten zuerst erstellt werden.

    
Brennan 04.05.2012 19:25
quelle
0

Ich kann vorschlagen, dass Sie einen einzelnen Arbeitsbereich für Ihre Bibliothek und Ihre Hauptprojekte verwenden. Fügen Sie im Hauptprojektschema das Bibliotheksziel vor dem Hauptverzeichnis (zum Kompilieren der Bibliothek vor dem Hauptziel) und dem Setup-Header-Suchpfad hinzu.

    
Valerii Pavlov 18.07.2012 09:57
quelle
0

Vereinfachen Sie Ihr Leben und verwenden Sie cocoaPods . Hier ist ein gutes Tutorial . CocoaPods erstellt automatisch einen Arbeitsbereich mit allen Bibliotheken, die Sie für Ihr Projekt benötigen. Ich hatte all diese Probleme mit Bibliotheken, und jetzt benutze ich einfach Pods.

    
Jose Llausas 07.10.2013 22:06
quelle
0

Je nachdem, wie Sie Ihr Projekt eingerichtet haben, verknüpft Xcode nicht notwendigerweise abhängige Bibliotheken. Um es jedes Mal verlinken zu können, müssen Sie das Projekt als Zielabhängigkeit in den Build-Phasen des Ziels hinzufügen, mit dem die Bibliothek ebenfalls verknüpft werden soll.

Angenommen, Sie haben einen Arbeitsbereich namens Test und zwei Projekte den Namen TestApplication und TestLibrary. Wenn Sie sie als separate Projekte in den Arbeitsbereich einschließen, können Sie TestLibrary.a zu TestApplication als Bibliothek im Abschnitt "Link Binary with Libraries" der Build-Phasen des TestApplication-Ziels hinzufügen. Dies ist jedoch NICHT der Fall kann es im Abschnitt "Zielabhängigkeiten" hinzufügen.

Wenn Sie nun TestLibrary als Unterprojekt von TestApplication verschieben (ziehen Sie es einfach in das Projekt im Projektnavigator), können Sie TestLibrary als Bibliothek hinzufügen, die mit UND als Zielabhängigkeit verknüpft werden soll von TestApplication. Wenn Sie es als Zielabhängigkeit hinzufügen, wird sichergestellt, dass Xcode (falls erforderlich) erstellt und die Bibliothek verknüpft.

Tut mir leid, aber es ist eine Weile her, seit ich herausgefunden habe, dass meine eigenen Projekte auf diese Weise eingerichtet wurden, so dass ich mich nicht mehr genau erinnern kann, in welcher Situation die Bibliothek nicht verlinkt ist. Ich denke, es war etwas in der Art, dass, da es ein separates Projekt war, Xcode nicht überprüfen würde, ob es wieder aufgebaut werden musste und nur mit der vorherigen Bibliothek verbunden war. Ich erinnere mich jedoch, dass meine Arbeit, bis ich herausgefunden habe, dass ich einfach eine Datei in dem Projekt anrühre, das ich bauen musste. Ich hatte eine Datei namens touchMe, die als Kompilierquelle enthalten war, wenn ich das Bibliotheksprojekt vor dem Erstellen anfasste. Sie könnten dasselbe tun, um zu sehen, ob das auch Ihr Problem behebt, wenn das Verschieben des Bibliotheksprojekts in das abhängige Projekt keine Option für Sie ist.

Ich hoffe, das hilft.

    
Jordan Bondo 23.10.2013 17:58
quelle

Tags und Links