Welche Beziehung besteht zwischen Xcode- und Xcode-Befehlszeilentools?

17

Wenn ich Xcode aus dem App Store installiere, kann ich sowohl Programme in Xcode als auch in der Befehlszeile kompilieren. Mehrere Kommandozeilenprogramme wie clang, makeund gitalle verfügbar werden , wenn Xcode.app installiert ist. Daher dachte ich, dass das separate Paket von Befehlszeilentools nur für diejenigen gedacht ist, die keine vollständige IDE installieren möchten.

Zu meiner Überraschung kann eines der Verknüpfungsprobleme, die beim Kompilieren von MacVim aufgetreten sind, durch die Installation der Befehlszeilentools mit erfolgreich gelöst werden xcode-select --install. Anscheinend unterscheiden sich Xcode.app und die Befehlszeilentools zumindest auf subtile Weise. Was ist dann der Unterschied? Hat der letztere eine bessere Abdeckung für alle wesentlichen Programmierkenntnisse als der erstere?

Derzeit verwende ich Xcode 6.0.1 auf Mavericks.

Siyuan Ren
quelle

Antworten:

5

Sie können es sehen als:

  • Die Befehlszeilen-Tools bilden die Grundlage. Zum Kompilieren Ihres Swift / Objective-C-Codes werden viele grundlegende Tools benötigt.
  • XCode ist die IDE, die einige zusätzliche Pakete mit sich bringt.

So stellen die Befehlszeilentools sicher, dass die grundlegenden UNIX-Tools abgedeckt sind (z. B. GCC), um Code kompilieren und verknüpfen zu können.

Xcode verwendet dann diese grundlegenden Tools.


Aus den Dokumenten:

Was ist das Befehlszeilen-Tools-Paket?

Das Befehlszeilen-Tools-Paket ist ein kleines, in sich geschlossenes Paket, das separat von Xcode heruntergeladen werden kann und das die Befehlszeilenentwicklung in OS X ermöglicht. Es besteht aus zwei Komponenten: OS X SDK und Befehlszeilen-Tools wie Clang sind in / usr / bin installiert.

Bastian Gruber
quelle
8
Aber anscheinend Xcode.app kommt mit seinem eigenen Kommandozeilen - Tools wie clang, git, makeund. Warum muss eine weitere Kopie dieser Tools installiert werden, um Software zu kompilieren?
Siyuan Ren
Warum anscheinend? Git und make sind zusätzliche Tools, die nicht in den "grundlegenden" Befehlszeilentools enthalten sind.
Bastian Gruber
3
git, makebefinden sich alle im Verzeichnis, /Library/Developer/CommandLineTools/usr/binsodass sie tatsächlich in den "grundlegenden" Befehlszeilentools enthalten sind.
Siyuan Ren