ความหมายของพวกเขาคืออะไรและฉันสามารถตั้งค่าเป็นค่าต่างๆ
ความหมายของพวกเขาคืออะไรและฉันสามารถตั้งค่าเป็นค่าต่างๆ
คำตอบ:
สถาปัตยกรรมคือสิ่งที่คุณต้องการสร้างสถาปัตยกรรมที่ถูกต้องคือสิ่งที่คุณคิดได้จากการสร้างด้วยโค้ดเบสของคุณ
ดังนั้นคุณอาจต้องการสร้างไบนารีของคุณสำหรับ armv7s เท่านั้น แต่ซอร์สโค้ดเดียวกันจะรวบรวมได้ดีสำหรับ armv7 และ armv6 ดังนั้นVALID_ARCHS = armv6 armv7 armv7s
แต่คุณตั้งARCHS = armv7s
เพราะนั่นคือทั้งหมดที่คุณจริงต้องการที่จะสร้างด้วยรหัสของคุณ
หรือใน Apple-ese:
ARCHS (สถาปัตยกรรม)
รายการตัวระบุที่คั่นด้วยช่องว่าง ระบุสถาปัตยกรรม (ABI, โมเดลตัวประมวลผล) ที่ไบนารีถูกกำหนดเป้าหมาย เมื่อการตั้งค่าการสร้างนี้ระบุมากกว่าหนึ่งสถาปัตยกรรมไบนารีที่สร้างขึ้นอาจมีรหัสออบเจ็กต์สำหรับแต่ละสถาปัตยกรรมที่ระบุ
และ:
VALID_ARCHS (สถาปัตยกรรมที่ถูกต้อง)
รายการตัวระบุที่คั่นด้วยช่องว่าง ระบุสถาปัตยกรรมที่อาจสร้างไบนารี ในระหว่างการสร้างรายการนี้จะถูกตัดกับค่าของการตั้งค่าการสร้าง ARCHS รายการผลลัพธ์ระบุสถาปัตยกรรมที่ไบนารีสามารถทำงานได้ หากรายการสถาปัตยกรรมที่เป็นผลลัพธ์ว่างเปล่าเป้าหมายจะไม่สร้างไบนารี
ที่มา: การอ้างอิงการตั้งค่า Xcode Build
ในทางปฏิบัติคุณปล่อยให้VALID_ARCHS
อยู่คนเดียวและไม่ต้องกังวลกับการเปลี่ยนแปลงและเพียงแค่ARCHS
ตั้งค่าสถาปัตยกรรมที่คุณต้องการสร้าง โดยทั่วไปคุณตั้งค่าการสร้างดีบักเป็นเพียงNATIVE_ARCH
เพราะคุณต้องการสร้างเวอร์ชันดีบักสำหรับเครื่องที่คุณจะทดสอบ / ใช้งานและรุ่นที่วางจำหน่ายสำหรับสถาปัตยกรรมทั้งหมดที่คุณวางแผนจะรองรับ
จากเอกสารแอปเปิ้ลเรารู้ว่าไบนารี Xcode จะสร้างรายการตัดกับValid Architectures
Architectures
ดังนั้นฉันไม่คิดว่าคำตอบของ Jeremy นั้นถูกต้องอย่างที่เขาพูด:
ดังนั้นคุณอาจต้องการสร้างไบนารีของคุณสำหรับ armv7s เท่านั้น แต่ซอร์สโค้ดเดียวกันจะ
รวบรวมได้ดีสำหรับ armv7 และ armv6 ดังนั้นVALID_ARCHS = armv6 armv7 armv7s
แต่คุณตั้งค่า ARCHS = armv7s เพราะนั่นคือทั้งหมดที่คุณต้องการสร้างด้วยโค้ดของคุณ
เมื่อคุณตั้งค่าVALID_ARCHS = armv6 armv7 armv7s
และตั้งค่าARCHS = armv7s
ผลลัพธ์ของไบนารี Xcode จะสร้างคือ armv7s ซึ่งไม่สามารถทำงานร่วมกับ armv6 / armv7 ได้
และหากคุณต้องการใช้งานร่วมกับ armv6 / armv7 / armv7s, คุณต้องตั้งค่า VALID_ARCHS = armv6 armv7 armv7s
และARCHS = armv6
ด้วยวิธีนี้ผลลัพธ์ของไบนารี Xcode จะสร้างเป็น armv6 และสามารถทำงานได้ดีบนทั้ง armv6 / armv7 / armv7s เนื่องจากโปรเซสเซอร์ arm เข้ากันได้แบบย้อนกลับ .