ความสัมพันธ์ระหว่างเครื่องมือบรรทัดคำสั่ง Xcode และ Xcode คืออะไร


17

เมื่อฉันติดตั้ง Xcode จาก App Store ฉันสามารถรวบรวมโปรแกรมใน Xcode เช่นเดียวกับบรรทัดคำสั่งด้วย สาธารณูปโภคบรรทัดคำสั่งต่างๆเช่นclang, makeและgitทั้งหมดกลายเป็นใช้ได้เมื่อมีการติดตั้ง Xcode.app ดังนั้นฉันคิดว่าแพคเกจเครื่องมือบรรทัดคำสั่งแยกต่างหากสำหรับผู้ที่ไม่ต้องการติดตั้ง IDE แบบเต็มเท่านั้น

แต่การที่จะแปลกใจของฉันหนึ่งในปัญหาการเชื่อมโยงที่ผมพบเมื่อรวบรวม MacVim xcode-select --installจะสามารถแก้ไขได้ประสบความสำเร็จโดยการติดตั้งเครื่องมือบรรทัดคำสั่งด้วย เห็นได้ชัดว่า Xcode.app และเครื่องมือบรรทัดคำสั่งแตกต่างกันอย่างน้อยก็ในรูปแบบที่ลึกซึ้ง ความแตกต่างคืออะไร? หลังมีความครอบคลุมที่ดีกว่าสำหรับสิ่งจำเป็นทั้งหมดสำหรับการเขียนโปรแกรมกว่าเดิมหรือไม่

ขณะนี้ฉันกำลังใช้ Xcode 6.0.1 บน Mavericks

คำตอบ:


5

คุณสามารถเห็นมันเป็น:

  • เครื่องมือบรรทัดคำสั่งเป็นพื้นฐานพื้นฐาน จำเป็นต้องมีเครื่องมือพื้นฐานหลายอย่างเพื่อรวบรวมรหัส Swift / Objective-C ของคุณ
  • XCode เป็น IDE ซึ่งมีแพ็กเกจเพิ่มเติมไม่กี่อย่าง

ดังนั้นเครื่องมือบรรทัดคำสั่งต้องแน่ใจว่าเครื่องมือพื้นฐานของ UNIX นั้นได้รับการคุ้มครอง (เช่น GCC) เพื่อให้สามารถคอมไพล์และลิงก์โค้ดได้

Xcode นั้นใช้เครื่องมือพื้นฐานเหล่านั้น


จากเอกสาร:

แพ็คเกจเครื่องมือบรรทัดคำสั่งคืออะไร

แพ็คเกจเครื่องมือบรรทัดคำสั่งเป็นแพ็คเกจขนาดเล็กที่มีในตัวเองพร้อมให้ดาวน์โหลดแยกต่างหากจาก Xcode และช่วยให้คุณพัฒนาบรรทัดคำสั่งใน OS X ประกอบด้วยองค์ประกอบสองส่วน: OS X SDK และเครื่องมือบรรทัดคำสั่งเช่นเสียงดังกราวซึ่ง ถูกติดตั้งใน / usr / bin


8
แต่เห็นได้ชัด Xcode.app มาพร้อมกับเครื่องมือบรรทัดคำสั่งของตัวเองเช่นclang, git, makeเช่นกัน เหตุใดการติดตั้งสำเนาเครื่องมือเหล่านี้จึงจำเป็นต้องรวบรวมซอฟต์แวร์
Siyuan Ren

เห็นได้ชัดว่าทำไม Git and make เป็นเครื่องมือเพิ่มเติมที่ไม่รวมอยู่ในเครื่องมือบรรทัดคำสั่ง "พื้นฐาน"
Bastian Gruber

3
git, makeมีทั้งหมดในไดเรกทอรี/Library/Developer/CommandLineTools/usr/binดังนั้นพวกเขาจะแน่นอนรวมอยู่ใน "พื้นฐาน" เครื่องมือบรรทัดคำสั่ง
Siyuan Ren
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.