Xcode 4 - สร้างไดเรกทอรีผลลัพธ์


217

ฉันมีปัญหาในการตั้งค่า / ค้นหาไฟล์ที่ส่งออกของฉันใน Xcode4 (เบต้า 5) ~/Library/Developer/ugly_path/...พวกเขาจะอยู่ที่ไหนสักแห่งใน ฉันไม่สามารถเลือก "show in finder" บนผลิตภัณฑ์ของฉันได้ มันเหมือนกันสำหรับโครงการ C แบบง่ายเครื่องมือพื้นฐานและแม้แต่ชุดโกโก้ การดีบักทำงานได้ดี

คุณช่วยชี้ให้ฉันดูได้จากที่ไหนและวิธีการตั้งค่า / สร้างไดเรกทอรีผลลัพธ์ (ฉันรู้ว่ามันฟังดูเหมือนโง่ฉันได้รับการเข้ารหัสใน Xcode3 เป็นเวลาหลายเดือน แต่ฉันไม่สามารถเข้าใจได้ใน Xcode4 เบต้า)

ขอบคุณมาก.

คำตอบ:


342

จากเมนู Xcode ด้านบนคลิกการตั้งค่าเลือกแท็บสถานที่ดูตัวเลือกสถานที่สร้าง

คุณมี 2 ตัวเลือก:

  1. สร้างผลิตภัณฑ์สร้างในตำแหน่งข้อมูลที่ได้รับ (แนะนำ)
  2. สร้างผลิตภัณฑ์บิลด์ในสถานที่ที่ระบุโดยเป้าหมาย

อัปเดต: ใน xcode 4.6.2 คุณต้องคลิกปุ่มขั้นสูงทางด้านขวาใต้ช่องข้อความข้อมูลที่ได้รับ สร้างตำแหน่งที่เลือกแบบดั้งเดิม


27
คำตอบนี้อธิบายถึงสาเหตุของการเปลี่ยนแปลงนี้: stackoverflow.com/questions/5331270/…
toofah

3
สมาชิกภูมิใจคุณหมายความว่าสิ่งเหล่านี้ไม่ได้อยู่ใน Xcode 5? พวกเขาอยู่ในการตั้งค่า -> สถานที่ -> ข้อมูลที่ได้รับ -> ขั้นสูง
Richard Venable

ตกลงดังนั้นงานสร้างของฉันไปที่.../XCode/DerivedData/โฟลเดอร์ง่ายพอ AppName-asdflkjqwergoobledygookยกเว้นว่าโฟลเดอร์ย่อยดูเหมือนจะเป็น เนื่องจากฉันสร้างจากสคริปต์ฉันต้องการค้นหางานสร้างจริง(ดังนั้นฉันจึงสามารถจัดทำและส่งผ่าน TestFlight :) ฉันจะทราบได้อย่างไรว่าMyAppName-xxxxตัวเลือกใดที่เหมาะสมที่สุด? ขอบคุณ!
Olie

@Olie นอกจากนี้คุณยังสามารถเปลี่ยนตำแหน่งข้อมูลที่ได้รับมาเป็นเส้นทางที่คุณเลือกเอง
เจอราร์ด

@ เจอราร์ด: ฉันทำได้ แต่นั่นไม่ใช่สิ่งที่ฉันอยากทำ ฉันกำลังตรวจสอบแหล่งที่มาจาก repo จากนั้นสร้างผ่านบรรทัดคำสั่งและฉันต้องการที่จะรู้ว่าสิ่งที่สร้างไป มันจะไม่เหมาะสมสำหรับสร้างสคริปต์ของฉันในการปรับเปลี่ยนโครงการในทางใดทางหนึ่ง (พูดโดยการเปลี่ยนการตั้งค่าโครงการ.)
Olie

140

หากคุณสร้างจากบรรทัดคำสั่งคุณสามารถตั้งค่าไดเรกทอรีผลลัพธ์ด้วยวิธีต่อไปนี้:

xcodebuild -workspace 'WORKSPACE_NAME.xcworkspace' \
           -scheme 'SCHEME_NAME' \
           -configuration 'Release' \
           -sdk iphoneos7.0 CONFIGURATION_BUILD_DIR='OUTPUT_DIRECTORY'

เพื่อให้สคริปต์ sh ของฉันทำงานฉันต้องลบเครื่องหมายคำพูดเดี่ยวและเขียนเพียง CONFIGURATION_BUILD_DIR = / Users / ...
Stanislav Pankevich

@occulus คุณพูดถูกเพราะไม่สามารถสร้างเป้าหมายการทดสอบได้หลังจากที่สร้างโครงการฉันคิดว่าถ้าคุณแค่สร้างมันอาจจะไม่เป็นไร แต่ใช้เส้นทางที่ดีกว่า!
Mostafa Berg

ในกรณีที่คนอื่นพยายามแก้ปัญหาที่คล้ายกันฉันเชื่อว่า XCode 6.x เพื่อวางไบนารีที่เชื่อมโยงตรงที่มันจำเป็นต้องใช้การรวมกันนี้:/Users/moi/src/mozbuilds/xul3604/$(CONFIGURATION)/dist/bin
J Evans

29

ใน Xcode 5: Xcodeเมนู> การตั้งค่า ...รายการ> สถานที่แท็บ> สถานที่แท็บย่อย> ขั้นสูง ...ปุ่ม> กำหนดเองตัวเลือก

แล้วเลือกเช่นเทียบกับพื้นที่ทำงาน


8
ขอให้คุณมีชีวิตอยู่เป็นร้อยปีแข็งแรงและมีสุขภาพดี ขอขอบคุณ !
WhozCraig

13

หากคุณมีการตั้งค่า Xcode 4 Build Location ให้เป็น "Place build products ในตำแหน่งข้อมูลที่ได้รับ (แนะนำ) ควรจะอยู่ใน ~ / Library / Developer / Xcode / DerivedData ไดเรกทอรีนี้จะมีโครงการของคุณเป็นไดเรกทอรี ชื่อโปรเจ็กต์จะถูกต่อท้ายด้วยตัวอักษรที่สร้างขึ้นจำนวนมากดังนั้นให้ดูอย่างระมัดระวัง


10

เก็บข้อมูลที่ได้รับ แต่ใช้ DSTROOT เพื่อระบุปลายทาง

ใช้ DEPLOYMENT_LOCATION เพื่อบังคับให้ใช้งาน

ใช้ DWARF_DSYM_FOLDER_PATH ที่ไม่มีเอกสารเพื่อคัดลอก dSYM ด้วย

สิ่งนี้ช่วยให้คุณใช้ตำแหน่งข้อมูลที่ได้รับจาก xcode build และไม่ต้องทำสิ่งแปลกประหลาดเพื่อค้นหาแอป

xcodebuild -sdk "iphoneos" -workspace Foo.xcworkspace -scheme Foo -configuration "Debug" DEPLOYMENT_LOCATION=YES DSTROOT=tmp DWARF_DSYM_FOLDER_PATH=tmp build

8

คุณสามารถค้นหาไดเร็กทอรีการสร้างได้เสมอโดยดูในตัวสร้างบันทึกการทำงานและคัดลอกพา ธ ที่นั่นไปยังหน้าต่างเทอร์มินัล

ฉันใช้สิ่งนี้เพื่อวิเคราะห์การรวมแอป iOS. iOS ของฉันก่อนที่จะติดตั้งเพื่อให้แน่ใจว่าไม่มีไฟล์หลงทางรวมอยู่ด้วย


แอปเปิล convient ดังนั้น ไม่!
zaph

1
และฉันจะหาบันทึกการสร้างนี้ได้ที่ไหน การค้นหา "build log" ใน Xcode ช่วยส่งคืนผลลัพธ์ 0 รายการ
devios1

1
อืมพบ "Log Navigator" ซึ่งดูเหมือนกรอบคำพูด
devios1

4

สำหรับทุกคนที่ต้องการค้นหาไดเรกทอรีการสร้างจากสคริปต์ แต่ไม่ต้องการเปลี่ยนให้เรียกใช้รายการต่อไปนี้เพื่อรับรายการการตั้งค่าการสร้างทั้งหมดที่ชี้ไปที่โฟลเดอร์ใน DerivedData:

xcodebuild -showBuildSettings | grep DerivedData

หากคุณเรียกใช้เป้าหมายและรูปแบบที่กำหนดเองโปรดใส่เป้าหมายดังกล่าวด้วย:

xcodebuild -workspace "Foo.xcworkspace" -scheme "Bar" -sdk iphonesimulator -configuration Debug -showBuildSettings | grep DerivedData

ดูที่เอาต์พุตเพื่อค้นหาเอาต์พุตการตั้งค่าที่คุณต้องการแล้ว:

xcodebuild -showBuildSettings | grep SYMROOT | cut -d "=" -f 2 - | sed 's/^ *//'

ส่วนสุดท้ายตัดสตริงที่เครื่องหมายเท่ากับแล้วตัดขอบช่องว่างที่จุดเริ่มต้น


2

หากคุณใช้ Xcode4 Workspaces ใหม่คุณสามารถเปลี่ยนตำแหน่งข้อมูลที่ได้รับภายใต้ไฟล์ -> การตั้งค่าพื้นที่ทำงาน ...


1

คุณสามารถกำหนดค่าไดเรกทอรีผลลัพธ์โดยใช้CONFIGURATION_BUILD_DIRตัวแปรสภาพแวดล้อม

ที่มา: http://developer.apple.com/library/mac/#documentation/DeveloperTools/Reference/XcodeBuildSettingRef/0-Introduction/introduction.html#//apple_ref/doc/uid/TP40003931-CH1-SW1


ไม่เกี่ยวข้องกับพฤติกรรมสถานที่ / ตำแหน่ง (ต่อเป้าหมาย) ที่ได้รับมา
Gregory Pakosz

ใช่แล้ว. มันทำงานได้ทั้งสองทาง จากเอกสารประกอบ: "เส้นทางไดเรกทอรีระบุไดเรกทอรีภายใต้ไฟล์ที่เกี่ยวข้องกับบิลด์ทั้งหมดสำหรับการกำหนดค่าบิลด์ที่ใช้งานอยู่"
Heath Borders

Nope ไม่ใช่กับ xcode4 มันขึ้นอยู่กับXcode > Preferences > Locations > Derived dataการตั้งค่าตามที่อธิบายไว้ในคำตอบที่โหวตมากที่สุด + เอกสารที่คุณอ้างถึงได้รับการปรับปรุงล่าสุดในปี 2010
Gregory Pakosz

ฉันใช้การตั้งค่านี้เพื่อกำหนดค่าไดเรกทอรีการสร้างด้วย xcode4 จาก xcodebuild ให้มันลอง.
Heath Borders

1
ดีฉันได้พยายามกับ Xcode 4.3.1 (จาก IDE) และโดยไม่ต้องเปลี่ยนการตั้งค่าระดับโลกผลิตภัณฑ์ที่สร้างที่ไหนสักแห่งในและไม่ได้อยู่ในไดเรกทอรีฉันระบุด้วย~/Library/Developer/Xcode/DerivedData/ CONFIGURATION_BUILD_DIRหากฉันต้องการCONFIGURATION_BUILD_DIRได้รับเกียรติฉันต้องเปลี่ยนการตั้งค่าข้อมูลที่ได้รับจาก Xcode เป็น "Legacy"
Gregory Pakosz

0

สิ่งอื่นที่ควรตรวจสอบก่อนที่คุณจะเริ่มเล่นด้วยค่ากำหนด Xcode คือ:

เลือกเป้าหมายของคุณและไปที่การตั้งค่าการสร้าง> บรรจุภัณฑ์> ส่วนขยายของ Wrapper

ค่าที่ควรมี: แอพ

หากไม่ดับเบิ้ลคลิกแล้วพิมพ์ "app" โดยไม่มี qoutes


-1

มันน่ารำคาญมาก เปิดโครงการของคุณคลิกเป้าหมายเปิดแท็บสร้างเฟส ตรวจสอบ Copy Bundle Resources ของคุณสำหรับรายการสีแดง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.