Xcode bunu yapmak için iyi bir yol göstermiyor. Çalıştır Komut Dosyası Çalıştır Komut Dosyası Yapılandırma aşamasında, üzerinde çalışmanız gereken tek şey, ortamda size sağlanan Xcode yapı ayarlarıdır.
Bağımsız değişken listesinin tamamını ld
'a gerçekten ihtiyacınız varsa, kullanabileceğiniz bir kesmek vardır. LD
ve LDPLUSPLUS
yapı ayarlarıyla, Xcode'un gerçek ld
yerine kendi komut dosyanızı çağırmasını sağlayabilirsiniz. Bu komut dosyasından, arkıları yakalayabilir, gerçek linker’i arayabilir ve daha sonra Run Script oluşturma aşamasından ziyade orada beğendiğiniz her türlü işlemi yapabilirsiniz.
sizin hedef için bir .xcconfig oluşturun: Burada
bunu yapabilirdi nasıl.
Bu gibi görünmelidir: projenizin dizinine
LD = $(SRCROOT)/ld-wrapper/clang
LDPLUSPLUS = $(SRCROOT)/ld-wrapper/clang++
SRCROOT puan. LDPLUSPLUS hattı, yalnızca uygulamanızın C++ veya ObjC++ kodu varsa gereklidir. Bir xcconfig oluşturmak istemiyorsanız, bunları Xcode UI aracılığıyla Kullanıcı Tanımlı derleme ayarları olarak da ekleyebilirsiniz.
Xcode'un çağırmak üzere sarıcı komut dosyaları oluşturun.
<your project root>/ld-wrapper/wrapper.sh
de böyle bir senaryo yükleyin:
#!/bin/bash
set -o errexit
# Choose which clang to run (clang or clang++) depending on how we're invoked.
# If we're invoked via the 'clang' link, we'll run 'clang'. If we're invoked
# via the 'clang++' link, we'll run 'clang++'.
CLANG_PATH="$DEVELOPER_DIR"/Toolchains/XcodeDefault.xctoolchain/usr/bin/$(basename "$0")
"$CLANG_PATH" "[email protected]"
echo "clang args: [email protected]"
echo "do any post processing here."
++ clang ve clang sarıcı komut dosyası için sembolik oluşturun: bu kadar
cd <project root>/ld-wrapper
ln -s wrapper.sh clang
ln -s wrapper.sh clang++
. Çirkin, ama işe yarıyor.
Teşekkürler @fpotter, SO. LD değişken yaklaşımının ilginç olduğunu düşünüyorum. Neden xcodebuild -dry-run' sonucunu ayrışamıyorum? – ekeren
"Kuru çalışma" çıktısını kesinlikle ayrıştırabilirsiniz. Ancak, bir Run Script içinden xcodebuild 'kuru çalıştırma' ile çağırmak yavaş olacaktır. Sadece kuru çalışma yapsa bile, xcodebuild projelerinizi açmak ve inşa etmeye hazırlanmak için çok zaman harcıyor. Gerçekten büyük projelerde, sadece kuru çalışma yapmak için bir dakikadan fazla sürebilir. – fpotter
projenizde hızlı kod bulunduğunda xcode'un LD ve LDPLUSPLUS değişkenini neden göz ardı ettiğine dair bir ipucunuz var mı? – ekeren