2012-11-27 5 views
9

Ich habe ein kleines Problem mit der Einstellung einer anderen Konfiguration für mein Projekt. Ich habe zwei Versionen der gleichen statischen Bibliothek. Einer hat die Protokollierung aktiviert, der andere nicht.iOS Link Binary mit Bibliothek nur zum Debuggen

Ich verwende zwei verschiedene xcconfig-Dateien für Debug vs. Release. In diesen Dateien spezifiziere ich die Bibliotheks- und Header-Suchpfade für die zwei Varianten der statischen Bibliothek. So weit, ist es gut.

In meinen Build-Einstellungen kann ich jedoch keine Möglichkeit sehen, die aktuelle Bibliothek bedingt zu verknüpfen. Verwenden Sie die Debug-Variante für Debug und die Freigabe für Release.

Irgendwelche Ideen?

+0

Ich denke, die schnellste Antwort hier ist: Sie können nicht. Aber ich denke, die Lösung könnte eine Methode zur Verfügung stellen, um die Protokolle in der statischen Bibliothek selbst zu aktivieren oder zu deaktivieren. Dann können Sie die gleiche Bibliothek verwenden, indem Sie die Protokolle aktivieren oder deaktivieren, wann immer Sie dies benötigen. –

Antwort

20

Sie müssen die Bibliothek mit der Build-Einstellung "Other Linker Flags" verknüpfen und nicht mit der standardmäßigen Benutzeroberfläche "Link Binary With Libraries". Die Build-Einstellung kann je nach Konfiguration geändert werden:

enter image description here

das Dreieck klicken und Sie können unterschiedliche Werte für Debug/Release geben. Sie müssen das -l Flag verwenden. Verwenden Sie beispielsweise für einen Dateinamen von libMyLib.a das Flag -lMyLib. Möglicherweise müssen Sie die "Library Search Paths" bearbeiten, um den entsprechenden Speicherort zu suchen.

Wenn die Dateinamen für die Debug- und die Release-Version identisch sind und Sie sie nicht ändern möchten, fügen Sie sie in ihre eigenen Verzeichnisse lib/Debug und lib/Release ein. Bearbeiten Sie dann die Build-Einstellung "Library Search Paths", indem Sie entweder "$SRCROOT/lib/Debug" oder "$SRCROOT/lib/Release" für die entsprechende Konfiguration hinzufügen.

+0

Splendid! Vielen Dank! –

+0

Funktioniert für mich. Vielen Dank! – Ramiro

+0

Um auf Mikes Antwort zu erweitern, wenn Sie mit einem Framework verknüpfen möchten, können Sie etwas wie "-framework SystemConfiguration" in Ihren anderen Linker Flags verwenden. –