মডিউলটি স্বয়ংক্রিয়ভাবে তৈরি করতে এবং সঠিক এক্সকোড / এসডিকে পাথের সাহায্যে রান স্ক্রিপ্ট ধাপের সাথে "কমনক্রিপ্টোমডিউল ম্যাপ" নামে একটি সমষ্টিগত লক্ষ্য তৈরি করা কিছুটা সহজ এবং আরও দৃust়তম কিছু:
রান স্ক্রিপ্ট পর্যায়ে এই ব্যাশ থাকা উচিত:
# This if-statement means we'll only run the main script if the CommonCryptoModuleMap directory doesn't exist
# Because otherwise the rest of the script causes a full recompile for anything where CommonCrypto is a dependency
# Do a "Clean Build Folder" to remove this directory and trigger the rest of the script to run
if [ -d "${BUILT_PRODUCTS_DIR}/CommonCryptoModuleMap" ]; then
echo "${BUILT_PRODUCTS_DIR}/CommonCryptoModuleMap directory already exists, so skipping the rest of the script."
exit 0
fi
mkdir -p "${BUILT_PRODUCTS_DIR}/CommonCryptoModuleMap"
cat <<EOF > "${BUILT_PRODUCTS_DIR}/CommonCryptoModuleMap/module.modulemap"
module CommonCrypto [system] {
header "${SDKROOT}/usr/include/CommonCrypto/CommonCrypto.h"
export *
}
EOF
শেল কোড এবং এর ${SDKROOT}
অর্থ আপনার Xcode.app পাথের হার্ড কোড করতে হবে না যা সিস্টেম-টু-সিস্টেমে পরিবর্তিত হতে পারে, বিশেষত আপনি যদি ব্যবহার করেনxcode-select
একটি বিটা সংস্করণে স্যুইচ করেন বা সিআই সার্ভারে তৈরি করছেন যেখানে একাধিক সংস্করণ ইনস্টল করা আছে অ-মানক অবস্থানগুলিতে। আপনার এসডিকে হার্ড কোড করারও দরকার নেই তাই এটি আইওএস, ম্যাকোস ইত্যাদির জন্য কাজ করা উচিত your আপনার প্রকল্পের উত্স ডিরেক্টরিতে আপনার কিছু বসাতে হবে না।
এই লক্ষ্যটি তৈরির পরে, আপনার লাইব্রেরি / কাঠামোটিকে লক্ষ্য নির্ভরতা আইটেমটির সাথে নির্ভর করে:
এটি আপনার কাঠামোটি তৈরি হওয়ার আগে মডিউল মানচিত্র তৈরি হওয়ার বিষয়টি নিশ্চিত করবে।
ম্যাকোস দ্রষ্টব্য : আপনি যদি macOS
পাশাপাশি সমর্থন করে থাকেন তবে আপনার সদ্য নির্মিত নতুন সামগ্রিক টার্গেটের উপরে বিল্ড সেটিংটি যুক্ত macosx
করতে Supported Platforms
হবে, অন্যথায় এটি মডিউল মানচিত্রটিকে Debug
বাকী অংশের সাথে সঠিক উত্পন্ন ডেটা ফোল্ডারে রাখবে না ফ্রেমওয়ার্ক পণ্য।
এরপরে, ${BUILT_PRODUCTS_DIR}/CommonCryptoModuleMap
সুইফ্ট বিভাগের অধীনে "আমদানি পথগুলি" বিল্ড সেটিংয়ে মডিউল মানচিত্রের মূল ডিরেক্টরিটি যুক্ত করুন SWIFT_INCLUDE_PATHS
:
$(inherited)
যদি আপনার প্রকল্প বা xcconfig স্তরে সংজ্ঞায়িত সন্ধানের পথ থাকে তবে একটি লাইন যুক্ত মনে রাখবেন ।
এটাই, আপনার এখন সক্ষম হওয়া উচিত import CommonCrypto
এক্সকোড 10 এর জন্য আপডেট
এক্সকোড 10 এখন একটি কমনক্রিপ্টো মডিউল মানচিত্র সহ জাহাজগুলি এই কাজটিকে অপ্রয়োজনীয় করে তোলে। আপনি যদি এক্সকোড 9 এবং 10 উভয়কেই সমর্থন করতে চান তবে রান স্ক্রিপ্ট পর্বে একটি মডিউল মানচিত্র উপস্থিত রয়েছে কি না তা পরীক্ষা করে দেখতে পারেন, উদাহরণস্বরূপ
COMMON_CRYPTO_DIR="${SDKROOT}/usr/include/CommonCrypto"
if [ -f "${COMMON_CRYPTO_DIR}/module.modulemap" ]
then
echo "CommonCrypto already exists, skipping"
else
# generate the module map, using the original code above
fi