BCCOSX: Der plattformübergreifende C++-Compiler für OS X
Nach oben zu Befehlszeilenhilfsprogramme - Index
Der pattformübergreifende C++-Compiler für die Macintosh OS X-Plattform ist BCCOSX.EXE. BCCOSX.EXE und BCC32.EXE nutzen dieselbe Codebasis. Für die Erstellung von pattformübergreifenden Anwendungen müssen Sie BCCOSX anstatt BCC32 verwenden.
Inhaltsverzeichnis |
BCCOSX und BCC32 sind eng miteinander verknüpft
Im Allgemeinen ist die Verwendung von BCCOSX identisch mit der Verwendung von BCC32.EXE (dem C++-Compiler nur für Windows), außer den folgenden plattformspezifischen Optionen für Mac OS X:
-
--frameworkund-F -
--sysinc(Include-Pfade) -
--syslib(Bibliothekspfade) -
--sysroot(Systemstamm) -
-txxx(Zieloptionen)
Die beiden Compiler verwenden eine gemeinsame Codebasis, daher unterscheidet sich die Befehlssyntax für den plattformübergreifenden BCCOSX-Compiler nur geringfügig von der Syntax für BCC32.
BCCOSX unterstützt keine strukturierte Exception-Behandlung (das ist Windows-spezifisch).
Befehlszeilensyntax
bccosx [option [option...}] <filename> [<filename>...]
Der Name des Befehlszeilen-Compilers, alle Optionen und Dateinamen müssen voneinander durch Leerzeichen getrennt sein. Stellen Sie jeder Option entweder einen Bindestrich (-) oder einen Schrägstrich (/) voran. Zum Beispiel:
BCCOSX -Ic:\code\hfiles
Sie können auch Optionen in Konfigurationsdateien (.CFG) festlegen, die im folgenden Abschnitt, BCCOSX.CFG-Datei, beschrieben werden.
Mit BCCOSX können Sie .O-Dateien an XLINK senden. BCCOSX kann auch Assembler-Code (siehe die Option -S) erzeugen, aber RAD Studio unterstützt keinen Assembler für Mac OS X.
In der Hilfe für die BCCOSX-Befehlszeile finden Sie detaillierte Informationen.
Um die Hilfe für die BCCOSX.exe-Befehlszeile im Befehlsfenster anzuzeigen, geben Sie die Befehlszeilenoption -h ein.
Um beispielsweise eine Liste der gebräuchlichsten Befehlszeilenoptionen anzuzeigen, geben Sie in der Befehlszeile Folgendes ein:
BCCOSX -h
Die angezeigte Liste weist die Optionen aus, die in der Voreinstellung (*) aktiviert sind:
Embarcadero C++ 6.40 für OS X Copyright (c) 1993-2011 Embarcadero Technologies, Inc.
Verfügbare Optionen (* = Vorgabeeinstellung, xxx = hat Unteroptionen: verwenden Sie -h -X):
(Hinweis: -X- oder -w-XXX macht in der Regel die mit -X oder -wXXX getroffene Festlegung rückgängig.)
Im Falle eines Konflikts zweier Optionen wird die zuletzt angegebene verwendet.)
--sysroot Das logische Stammverzeichnis für Header, Bibliotheken und Frameworks festlegen
(Pfaden, die mit --sysinc oder --syslib angegeben werden, und den -F-Pfaden, die mit
'/' beginnen, wird dieser Wert vorangestellt)
--sysinc Systemsuchpfad für Include-Dateien festlegen
(wenn angegeben, wird das Systemstammverzeichnis vorangestellt)
--syslib Systemsuchpfad für Bibliotheksdateien festlegen
(wenn angegeben, wird das Systemstammverzeichnis vorangestellt)
--framework Als Link-Ziel ein Mac OS X-Framework festlegen (z.B. --framework=Carbon)
--savemem Maximale Speichergröße (in MB) für SAVEMEM setzen
(Das ist der fortlaufende Speicher, der zum Speichern von globalen Symbolen und
ähnlichen Konstrukten zugewiesen wird. Vorcompilierte Header verwenden diesen Speicher.)
--version Compiler-Version anzeigen
--replacehdr Header-Namen ersetzen (z.B. --replaceHeader=a.h=b.h)
--xrtti Erweitere RTTI-Informationen erzeugen
-3 Mit dem geschützten Modus eines 80386-Prozessors kompatible Anweisungen erzeugen
-4 Mit dem geschützten Modus eines 80386/80486-Prozessors kompatible Anweisungen erzeugen
-5 Pentium-Anweisungen erzeugen
-6 Pentium Pro-Anweisungen erzeugen
-Axxx ANSI-Konformität aktivieren
-B In .ASM (-S) compilieren, dann in .OBJ zusammenstellen
-Cxxx Verschachtelte Kommentare aktivieren
-D -D<name> definiert 'name' als Null-String; wahlweise lässt sich -D<name>=<wert> verwenden"
-E Zu verwendenden Assembler festlegen
-F Das angegebene Verzeichnis dem Framework-Header-Suchpfad hinzufügen
Zum Beispiel: -F/System/Library/Frameworks;/Library/Frameworks
HINWEIS: Wenn --sysroot angegeben ist, wird Pfaden, die mit '/' beginnen, der Wert von --sysroot vorangestellt.
-G Größe/Geschwindigkeit optimieren; verwenden Sie stattdessen -O1 und -O2
-Hxxx Vorcompilierte Header erzeugen und verwenden
-I Suchpfad für Include-Dateien festlegen
-Jxxx Optionen für Vorlagenerzeugung
-K Vorzeichenlosen Standardzeichentyp setzen
-L Suchpfad für Bibliothek
-M Linker-Map-Datei erstellen
-N Sonstiges (siehe -h -N)
-Nd Makros ergeben standardmäßig den Wert "1" (-DX => -DX=1)
-Nt GNU __typeof(var)-Unterstützung
-Nv void& als gültigen Typ zulassen
-O Sprünge optimieren
-P C++-Compilierung unabhängig von der Dateierweiterung durchführen
-Q Erweiterte Compiler-Fehlerinformationen
-Rxxx Browser-Informationen in erzeugte .OBJ-Dateien einbeziehen
-S In Assembly compilieren
-T Assembler-Option festlegen, z.B. -Tx
-U Undefine aller vorherigen Namensdefinitionen
-Vxxx Kompatibilität
-X Autoabhängigkeitsausgabe des Compilers deaktivieren
-Zd Globale Definitionen als DocBook-Spezifikation wie folgt ausgeben: -Zd=<datei>.c
-Zn CodeGear-Built-Ins deaktivieren und/oder nicht definieren
-Zx Global Definitionen in XML-Datei ausgeben.
Unteroptionen:
-Zx=<dateiname> Nur Typen/Deklarationen in <dateiname> ausgeben
-Zxf[=dateiname] Member des Basistyps weglassen
-Zxm[=dateiname] Makros ausgeben
-Zxp[=dateiname] Datei- & Zeilenposition ausgeben
-axxx Grenzen für Datenausrichtung festlegen. Vorgabe ist -a8; -a- bedeutet -a1
-b -bi aktivieren und Enums für die Typprüfung als Ints behandeln
* -bi Falls nicht anders angegeben, Größe so erstellen: sizeof(enum x) == sizeof(int)
-c Nur in Objektdatei compilieren, nicht linken
-d Doppelte Strings zusammenführen
-dc Strings in das schreibgeschützte Datensegment stellen
-dw Strings in das (beschreibbare) Datensegment stellen
-e Zielpfadname für ausführbare Datei festlegen
* -ff Schnelles Gleitkomma
-fp Pentium-sicheres FDIV
* -fq Stille Gleitkommavergleichsanweisung verwenden (FUCOMP)
-g Stapel-Compilierung nach n Warnungen abbrechen (Vorgabe = 255)
-h Hilfe anfordern ('-h -' zeigt die gesamte Hilfe an). Themenspezifisch mit: -h -V
-i Maximale signifikante Bezeichnerlänge festlegen (Vorgabe = 250)
-j Stapel-Compilierung nach n Fehlern abbrechen (Vorgabe = 50)
* -k Standard-Stack-Frames erzeugen
-l Optionen an den Linker übergeben; Beispiel: -ls -l-x
-m Abhängigkeitsinformationen für Make-Datei generieren
-md Abhängigkeitsinfo in .d-Dateien aufnehmen, nicht in die Objektdatei
-mm System-Header-Dateien beim Erzeugen der Abhängigkeitsinfo ignorieren
-mo Ausgabedatei für Abhängigkeitsinfo festlegen
-n Ausgabeverzeichnis für Objektdateien festlegen
-o Ausgabedateiname festlegen (-o<dateiname> oder —o <dateiname> werden unterstützt)
-pxxx Pascal-Aufrufkonvention verwenden
-q Identifikationsbanner des Compilers unterdrücken
-r Registervariablen verwenden
-rd Registervariablen nur verwenden, wenn Registerschlüsselwort eingesetzt wird
-s Mit dem nicht-inkrementellen Linker des Systems linken
-t Ausführbare Zieldatei angeben
* -u Unterstriche für Symbolnamen erzeugen
-vxxx Quelltext-Debugging aktivieren
-w Alle Warnungen anzeigen
-w! Bei Warnungen nicht null vom Compiler zurückgeben
-xxxx Exception-Behandlung aktivieren
-y Zeilennummern für das Debuggen einschalten
-z Optionen zur Neudefinition der Standardsegmentnamen
'-h <OPT>' für Hilfe zu einer bestimmten Option oder
'-h -', um alle verfügbaren Optionen anzuzeigen.
Anzeigen der Hilfe für bestimmte Optionsgruppen, wie -Axxx und -Vxxx
Sie können detaillierte Informationen zu mehrbuchstabigen Optionen, wie -Axxx (Sprachkompatibilität und Standardkomplianz) und -Vxxx (Abwärtskompatibilität) anzeigen.
Verwenden Sie dazu die Befehlszeilenoption -h mit dem Anfangsbuchstaben der Optionsgruppe (z.B. -A für die -Axxx-Optionen). BCC32 zeigt nur die Hilfethemen für die angegebene Optionsgruppe an (z.B. für -Axxx, -Vxxx oder -Wxxx).
Um beispielsweise eine Beschreibung für die Optionen -Axxx (Sprachkompatibilität und Standardkomplianz) anzuzeigen, geben Sie die Befehlszeilenoptionen -h und -A ein:
C:\>bccosx -h -A Embarcadero C++ 6.40 für OS X Copyright (c) 1993-2011 Embarcadero Technologies, Inc. Verfügbare Optionen (* = Vorgabeeinstellung, xxx = hat Unteroptionen: verwenden Sie -h -X): (Hinweis: -X- oder -w-XXX macht in der Regel die mit -X oder -wXXX getroffene Festlegung rückgängig.) Im Falle eines Konflikts zweier Optionen wird die zuletzt angegebene verwendet.) -A ANSI-Konformität aktivieren -AF SUN Forte-Schlüsselwörter und -Erweiterungen verwenden -AG GNU-Schlüsselwörter und -Erweiterungen -AK Schlüsselwörter und Erweiterungen von Kernighan und Ritchie (K&R) -AT CodeGear C++-Schlüsselwörter und -Erweiterungen (auch -A-) -AU Schlüsselwörter und Erweiterungen aus UNIX-System V -An C99-Schlüsselwörter und -Erweiterungen -Ax Schlüsselwörter für künftige C++-0x-Erweiterungen reservieren
Im folgenden Beispiel zeigt die BCCOSX-Befehlszeilenhilfe Einzelheiten zu den -Vxxx-Optionen (Abwärtskompatibilität) an:
C:\>bccosx -h -V Embarcadero C++ 6.40 für OS X Copyright (c) 1993-2011 Embarcadero Technologies, Inc. Verfügbare Optionen (* = Vorgabeeinstellung, xxx = hat Unteroptionen: verwenden Sie -h -X): (Hinweis: -X- oder -w-XXX macht in der Regel die mit -X oder -wXXX getroffene Festlegung rückgängig.) Im Falle eines Konflikts zweier Optionen wird die zuletzt angegebene verwendet.) -V Kompatibilität * -VA Alle globalen Funktionen in ihren eigenen virtuellen/schwachen Segmenten erzeugen -VC Aufrufkonvention nicht zu Symbolen verkürzen -VF MFC-Kompatibilität -VF3 MFC 3.2 unterstützen -VF4 MFC 4.0 unterstützen * -VI Microsoft-Suchalgorithmus zum Suchen von Header-Dateien verwenden -VM Microsoft Visual C++-Kompatibilität * -VP PIC-Codegenerierung -Va Klassenargumente im alten Stil unterstützen -Vb Rückwärtskompatibilität mit den Bcc-Versionen 5.8.2 und früher aktivieren -Vbc Referenz zu Referenz nicht ausblenden und qualifizierte Referenzen zulassen -Vbe Explizite Vorlagenspezialisierung im alten Stil zulassen -Vbi C89-Regeln befolgen -Vbn Aufruf einer nicht konstanten oder nicht-volatile Member-Funktion für ein konstantes oder volatile Objekt zulassen -Vbo Alte Borland-Auflösungsregeln für das Überladen verwenden -Vbr Alte Borland-Regeln für Referenzbindung verwenden -Vbs String-Literale als nicht konstant behandeln -Vbt Verwendet alte Borland-Typregeln für dreiteilige Operatoren -Vbu Alte Borland-Regeln für using in Vorlagen verwenden -Vbx Explizite Vorlagenspezialisierung als Member-Funktion zulassen -Vc Konstruktor-Verschiebungen unterstützen -Vd Alte Gültigkeitsbereichsregeln für C++-for-Anweisungen verwenden -Ve Leere Basisklassen mit Länge null -Vg Lexikalischen Digraph-Scanner deaktivieren -Vi Alten 8.3-Suchalgorithmus zum Suchen von Header-Dateien verwenden -Vl Altes Borland-Klassen-Layout verwenden -Vm Member-Zeigeroptionen -Vmd Kleinstmögliche Repräsentation für Member-Zeiger verwenden -Vmm Mehrfachvererbung für Member-Zeiger unterstützen -Vmp Deklarierte Genauigkeit von Member-Zeigern beachten -Vms Einfachvererbung für Member-Zeiger unterstützen -Vmv Keine Beschränkungen dafür einfügen, wohin Member-Zeiger zeigen können -Vn Neue Operatorennamen aktivieren: and, or, and_eq, bitand, etc. -Vo (Fast) alle Kompatibilitäts-Flags setzen; wird mit altem Quelltext verwendet -Vp 'this' wie in Pascal zuerst -Vr Reihenfolge für Multizeichenkonstante umkehren -Vt Virtuellen Tabellenzeiger an den Anfang des Objekt-Layouts stellen -Vv 'slow' virtuelle Basiszeiger verwenden -Vw Nativen Quelltext anstelle von Unicode für Multibyte-Zeichen ausgeben -Vx Leere Klassenelemente auf 0 setzen
Include-Pfade (-I, --sysinc)
BCCOSX löst die Include-Direktiven durch die Suche nach den angegebenen Dateien in dem Standard-Include-Pfaden gefolgt von den Remote-Include-Pfaden auf.
Remote-Pfade sind relativ zu $(SYSROOT).
$(SYSROOT) ist ein Windows-Verzeichnis, das das logische Stammverzeichnis auf dem Mac OS X-Computer repräsentiert. An diesem Speicherort werden Header-Dateien und dynamische Bibliotheken für die Compilierung und das Linken kopiert (zwischengespeichert) (siehe PAClient.exe).
Die Include-Pfade können mit den folgenden Optionen gesteuert werden:
|
Option |
Include-Pfadtyp |
Beschreibung |
|---|---|---|
|
|
Standard |
Setzt den Standardsuchpfad für Include-Dateien. |
|
|
Remote |
Setzt den Systemsuchpfad für (Remote-)Include-Dateien. |
Remote-Pfade werden nach der Verarbeitung der Standardpfade verarbeitet.
BCCOSX setzt voraus, dass Include-Direktiven der Form #include </...> (spitze Klammern, Pfade beginnen mit einem Schrägstrich) auf $(SYSROOT) verweisen.
Häufig verwendete Include-Pfade sind in der folgenden Tabelle beschrieben:
|
Include-Pfadtyp |
Pfad |
Beschreibung |
|---|---|---|
|
Standard |
|
Dieses Verzeichnis enthält die von RAD Studio bereitgestellten C/C++-RTL-Header-Dateien (.h). Einige dieser Dateien enthalten C/C++-Header-Dateien aus |
|
|
Dieses Verzeichnis enthält vom Delphi-RTL-Computer erzeugte Header-Dateien (.hpp). | |
|
Remote |
|
Dieses Verzeichnis enthält die auf Windows zwischengespeicherten C/C++-RTL-Header-Dateien für Mac OS X. |
Informationen zum Setzen der Include-Pfade aus RAD Studio finden Sie unter C++-Compiler Verzeichnisse und Bedingungen (für Standard-Include-Pfade) und Fenster "Remote-Profile" (für Remote-Include-Pfade).
Bibliothekspfade (-L, --syslib)
|
Option |
Include-Pfadtyp |
Beschreibung |
|---|---|---|
|
|
Standard |
Suchpfad für Bibliotheksdateien. |
|
|
Remote |
Suchpfade für Bibliotheksdateien sind relativ zu |
Standard-Bibliothekspfade und Remote-Bibliothekspfade werden in der angegebenen Reihenfolge verarbeitet. Sie können daher die Bibliothekssuchpfade durch eine verschachtelte Übergabe der Optionen -L und --syslib an den Compiler steuern.
Systemstamm (--sysroot)
$(SYSROOT) ist ein Verzeichnis auf dem Windows-Computer, das das logische Stammverzeichnis auf dem Remote/Zielcomputer repräsentiert. In diesem Verzeichnis werden Dateien und/oder symbolische Informationen von dem Remote/Zielcomputer zwischengespeichert. Mit dem SYSROOT-Wert sucht BCCOSX.EXE nach den Include- und Bibliotheksdateien.
Mit der Option --sysroot und Angabe des Verzeichnisses auf dem Entwicklungs-PC, in das die lokale Zwischenspeicherung kopiert werden soll, können Sie den Wert für SYSROOT ändern.
Informationen zum Setzen des SYSROOT-Pfades in RAD Studio finden Sie unter Remote-Profile.
Zieloptionen für plattformübergreifende Anwendungen (--txxx)
BCCOSX unterstützt die folgenden plattformübergreifenden Compiler-Optionen für die Angabe des Ziels einer Compilierung (die Befehlszeilenoptionen -txxx):
Um die Befehlszeilenhilfe für die -txxx-Optionen anzuzeigen, geben Sie Folgendes ein: > bccosx -h -t.
| Option | Beschreibung |
|---|---|
|
Ausführbare Zieldatei angeben |
|
|
|
DLL (gemeinsam genutzte Bibliothek) bzw. |
|
Multithread-Anwendung |
|
Package |
Einige der -t-Optionen werden von BCC32: Der C++-Befehlszeilen-Compiler für 32-Bit-Windows, nicht unterstützt.
BCCOSX.CFG-Datei
Die Konfigurationsdatei für BCCOSX enthält die folgenden Einstellungen für plattformübergreifende Compiler:
-I"C:\Program Files\Embarcadero\RAD Studio\9.0\include\osx";"C:\Program Files\Embarcadero\RAD Studio\9.0\include\osx\crtl";"C:\Program Files\Embarcadero\RAD Studio\9.0\include\osx\rtl" -I"C:\Program Files\Embarcadero\RAD Studio\9.0\dinkumware" -L"C:\Program Files\Embarcadero\RAD Studio\9.0\lib\osx32\release" --syslib=/usr/lib --sysinc=/usr/include -F/System/Library/Frameworks
Sie können eine eigene BCCOSX.CFG-Datei erstellen und sie für die Compilierung verwenden. Die benutzerdefinierte BCCOSX.CFG-Datei muss in das aktuelle Verzeichnis, aus dem BCCOSX.EXE aufgerufen wird, kopiert werden.
Siehe auch
- XLINK.EXE: Der plattformübergreifende Linker
- Mac OS X-Anwendungsentwicklung
- BCC32: Der C++-Befehlszeilen-Compiler
-
--framework(Option) - Compilieren und Linken einer C++-Konsolenanwendung für OS X in der Befehlszeile
- Plattformübergreifende OS X-Konsolenanwendung "Hello World"
- Plattformübergreifende Anwendungen - Index
- C++-Compiler-Projektoptionen
- Mac OS X GNU Compiler Collection