Wie kann ich feststellen, welche Argumente der Befehl ld im Build-Prozess innerhalb eines Skripts haben soll, das als "Script-Build-Phase ausführen" ausgeführt wird?
Ich habe xcodebuild -dry-run
als eine Option betrachtet, aber dann muss ich verstehen, was die Argumente sein sollen, die ich ihm gebe.
Irgendeine Idee für eine robuste Lösung?
BEARBEITEN :
Es scheint, dass xcodebuild LD und LDPLUSPLUS nicht unterstützt, wenn das Projekt schnellen Quellcode enthält. Die Lösung, die @fpotter anbietet, funktioniert also nicht mit swift.
Irgendwelche Gedanken?
Xcode bietet keinen guten Weg, dies zu tun. In einer Build-Phase Run Script müssen Sie nur mit den Xcode-Build-Einstellungen arbeiten, die Ihnen in der Umgebung zur Verfügung stehen.
Wenn Sie wirklich die gesamte Argumentliste zu ld
benötigen, gibt es einen Hack, den Sie verwenden können. Mit den Einstellungen LD
und LDPLUSPLUS
build können Sie Xcode veranlassen, ein eigenes Skript anstelle des realen ld
aufzurufen. Von diesem Skript aus können Sie die Argumente erfassen, zu dem echten Linker aufrufen und dann die von Ihnen gewünschte Nachbearbeitung durchführen, anstatt in einer Run Script-Build-Phase.
Hier können Sie Folgendes tun:
Erstellen Sie eine .xcconfig-Datei für Ihr Ziel.
Es sollte so aussehen:
%Vor%SRCROOT zeigt auf das Verzeichnis Ihres Projekts. Die LDPLUSPLUS-Zeile wird nur benötigt, wenn Ihre App über C ++ - oder ObjC ++ - Code verfügt. Wenn Sie keine xcconfig erstellen möchten, können Sie diese auch als benutzerdefinierte Buildeinstellungen über die Xcode-Benutzeroberfläche hinzufügen.
Erstellen Sie Wrapper-Skripte für den Aufruf von Xcode.
Installieren Sie ein Skript wie dieses unter <your project root>/ld-wrapper/wrapper.sh
:
Erstellen Sie Symlinks für das Wrapper-Skript für clang und clang ++:
%Vor%Das ist es. Es ist hässlich, aber es funktioniert.
Tags und Links xcode xcodebuild xctool