एक्सकोड ऐसा करने का एक अच्छा तरीका नहीं दिखाता है। रन स्क्रिप्ट बिल्ड चरण में, आपको पर्यावरण में प्रदान की गई एक्सकोड बिल्ड सेटिंग्स के साथ काम करना होगा।
यदि आपको वास्तव में ld
पर संपूर्ण तर्क सूची की आवश्यकता है, तो आप एक हैक का उपयोग कर सकते हैं। LD
और LDPLUSPLUS
बिल्ड सेटिंग्स के साथ, आप वास्तविक ld
के बजाय एक्सकोड को अपनी खुद की एक स्क्रिप्ट कॉल कर सकते हैं। उस स्क्रिप्ट से, आप तर्कों को कैप्चर कर सकते हैं, असली लिंकर से कॉल कर सकते हैं, और उसके बाद रन स्क्रिप्ट बिल्ड चरण की बजाय आपको जो भी पोस्ट प्रोसेसिंग करना पसंद है।
अपने लक्ष्य के लिए एक .xcconfig बनाएँ:
यहाँ आप कैसे कर सकते हैं कि है।
यह इस तरह दिखना चाहिए:
LD = $(SRCROOT)/ld-wrapper/clang
LDPLUSPLUS = $(SRCROOT)/ld-wrapper/clang++
SRCROOT अपने प्रोजेक्ट की निर्देशिका को इंगित करता है। LDPLUSPLUS लाइन केवल तभी जरूरी है जब आपके ऐप में C++ या ObjC++ कोड हो। यदि आप xcconfig नहीं बनाना चाहते हैं, तो आप एक्सकोड यूआई के माध्यम से इन्हें उपयोगकर्ता-परिभाषित बिल्ड सेटिंग्स के रूप में भी जोड़ सकते हैं।
कॉल करने के लिए एक्सकोड के लिए रैपर स्क्रिप्ट बनाएं।
<your project root>/ld-wrapper/wrapper.sh
पर इस तरह एक स्क्रिप्ट स्थापित करें:
#!/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."
बजना और बजना के लिए ++ आवरण स्क्रिप्ट के लिए सिमलिंक बनाएँ:
cd <project root>/ld-wrapper
ln -s wrapper.sh clang
ln -s wrapper.sh clang++
यह है कि। यह बदसूरत है, लेकिन यह काम करता है।
धन्यवाद @ एफपोटर, एसओ में जवाब देने वाले पहले व्यक्ति होने के लिए खुश हैं। मुझे लगता है कि एलडी परिवर्तनीय दृष्टिकोण दिलचस्प है। मैं 'xcodebuild -dry-run' के परिणाम का विश्लेषण क्यों नहीं कर सकता? – ekeren
आप निश्चित रूप से 'शुष्क-रन' के आउटपुट को पार्स कर सकते हैं। लेकिन, एक रन स्क्रिप्ट के भीतर से 'ड्राई-रन' के साथ xcodebuild को कॉल करना धीमा होगा। यहां तक कि अगर केवल सूखे चलते हैं, तो xcodebuild आपकी परियोजनाओं को खोलने और निर्माण करने की तैयारी में बहुत समय व्यतीत करता है। वास्तव में बड़ी परियोजनाओं पर, सूखे चलाने के लिए बस एक मिनट से अधिक समय लग सकता है। – fpotter
क्या आपके पास कोई सुराग है कि क्यों प्रोजेक्ट में स्विफ्ट कोड होने पर एक्सकोड एलडी और एलडीपीएलएसपीएलएएल वैरिएबल को नजरअंदाज करता है? – ekeren