Afficher : Delphi C++
Préférences d'affichage

BCCOSX, le compilateur croisé C++ pour OS X

De RAD Studio XE2

Remonter à Utilitaires en ligne de commande - Index


Le compilateur croisé C++ pour la plate-forme Macintosh OS X est BCCOSX.EXE, et il partage sa base de code avec BCC32.EXE. Vous devez utiliser BCCOSX au lieu de BCC32 si vous voulez créer une application multiplate-forme.


Sommaire

BCCOSX est étroitement associé à BCC32

En général, l'utilisation de BCCOSX est identique à celle de BCC32.EXE (le compilateur C++ Windows-seulement), à l'exception des options suivantes, spécifiques à la plate-forme, pour Mac OS X :

Comme les deux compilateurs partagent une base de code, la syntaxe de la commande pour le compilateur croisé BCCOSX ne comporte que quelques différences par rapport à la syntaxe pour BCC32.

BCCOSX ne supporte pas la gestion des exceptions structurées (spécifique à Windows).

Syntaxe de la ligne de commande

bccosx [option [option...}] <nomfichier> [<nomfichier>...] 

Utilisez des espaces pour séparer le nom du compilateur, chaque option et les noms de fichiers sur la ligne de commande. Placez devant chaque option un tiret (-) ou une barre oblique (/). Par exemple :

BCCOSX -Ic:\code\hfiles 

Vous pouvez aussi spécifier les options dans les fichiers de configuration (.CFG), qui sont décrits dans une section suivante, Fichier BCCOSX.CFG.

Vous pouvez utiliser BCCOSX pour envoyer les fichiers .O à XLINK. BCCOSX peut aussi générer du code assembleur (voir l'option -S), mais nous ne fournissons pas un assembleur pour Mac OS X.

Affichage de l'aide de la ligne de commande de BCCOSX pour obtenir des informations détaillées

Pour afficher l'aide de la ligne de commande de BCCOSX.exe dans la fenêtre cmd, incluez l'option de ligne de commande -h.

Par exemple, pour afficher la liste des options de la ligne de commande du compilateur les plus courantes, tapez :

BCCOSX -h 

La liste affichée indique les options activées par défaut (*) :

Embarcadero C++ 6.40 pour OS X Copyright (c) 1993-2011 Embarcadero Technologies, Inc.
Options disponibles (* = valeur par défaut, xxx = a des sous-options : utilisez -h -X) :
(Remarque : -X- ou -w-XXX annule généralement ce qui a été défini ou non défini par -X ou -wXXX.
 Si deux options sont en conflit, la dernière option spécifiée sera utilisée.)
--sysroot Définit le répertoire racine logique pour les en-têtes, les bibliothèques et les frameworks
	  (Les chemins spécifiés dans --sysinc ou --syslib et les chemins de -F qui commencent
	   par '/' sont préfixés avec cette valeur.)
--sysinc  Définir le chemin de recherche des fichiers d'inclusion système
	  (si spécifié, le préfixe sysroot sera ajouté)
--syslib  Définir le chemin de recherche des fichiers de bibliothèques système
	  (si spécifié, le préfixe sysroot sera ajouté)
--framework Spécifie un framework Mac OS X à lier (par exemple, --framework=Carbon)
--savemem Définir la mémoire SAVEMEM maximale (en Mo)
	  (Il s'agit de la mémoire contiguë allouée pour stocker les symboles globaux et
	   les constructions similaires.  Les en-têtes précompilés utilisent cette mémoire.)
--version Afficher la version du compilateur
--replacehdr Remplacer le nom d'en-tête (par exemple --replaceHeader=a.h=b.h)
--xrtti   Générer les informations rtti étendues
  -3      Générer des instructions compatibles au mode protégé 80386
  -4      Générer des instructions compatibles au mode protégé 80386/80486
  -5      Générer les instructions Pentium
  -6      Générer les instructions Pentium Pro
  -Axxx   Activer la conformité ANSI
  -B      Compiler en .ASM (-S), puis assembler en .OBJ
  -Cxxx   Activer les commentaires imbriqués
  -D      -D <nom> définit 'nom' comme une chaîne null, ou utilisez -D<nom>=<valeur>
  -E      Spécifier l'assembleur à utiliser
  -F      Ajouter le répertoire spécifié au chemin de recherche d'en-tête de framework
	    Par exemple, -F/System/Library/Frameworks;/Library/Frameworks
	    REMARQUE : Si --sysroot est spécifié, les chemins commençant par '/' sont précédés de la valeur --sysroot.
  -G      Optimiser la taille/vitesse ; utiliser -O1 et -O2 à la place
  -Hxxx   Générer et utiliser des en-têtes précompilés
  -I      Définir le chemin de recherche du fichier include
  -Jxxx   Options de génération des templates
  -K      Définir le type de caractère par défaut à non signé
  -L      Chemin de recherche du fichier bibliothèque
  -M      Créer le fichier map du lieur
  -N      Hodgepodge of miscellanity (voir -h -N)
  -Nd     Les macros obtiennent une valeur de "1" par défaut (-DX => -DX=1)
  -Nt     Support GNU __typeof(var)
  -Nv     Autoriser void& comme un type valide
  -O      Optimiser les sauts
  -P      Effectuer la compilation C++ quelle que soit l'extension du source
  -Q      Informations erreurs du compilateur étendues
  -Rxxx   Inclure les informations du navigateur dans les fichiers .OBJ générés
  -S      Compiler en assembleur
  -T      Spécifier l'option assembleur, ex. -Tx
  -U      Annuler les définitions de nom précédentes
  -Vxxx   Options de compatibilité
  -X      Désactiver la sortie d'auto-dépendance du compilateur
  -Zd     Afficher les defs globales sous forme de spéc. DocBook ; spécification : -Zd=<fichier>.c
  -Zn     Désactiver et/ou ne pas définir les builtins CodeGear
  -Zx     Générer les définitions globales dans un fichier XML.
	      Sous-options :
		-Zx=<fichier> Emettre seulement les types/déclarations dans <fichier>
		-Zxf[=fichier] Ignorer les membres de type de base 
		-Zxm[=fichier] Emettre les macros
		-Zxp[=fichier] Emettre la position fichier et ligne
  -axxx   Définir les frontières d'alignement des données. Défaut : -a8; -a- signifie -a1
  -b      Activer -bi et traiter les enums comme des entiers, du point de vue de la vérification des types
* -bi     sizeof(enum x) == sizeof(int), sauf indication contraire explicite
  -c      Compiler en fichier objet uniquement, ne pas lier
  -d      Fusionner les chaînes dupliquées
  -dc     Placer les chaînes dans le segment de données en lecture seule
  -dw     Placer les chaînes dans le segment de données (en écriture)
  -e      Spécifier le chemin de l'exécutable cible
* -ff     Virgule flottante rapide
  -fp     Corriger le défaut Pentium FDIV
* -fq     Utiliser l'instruction de comparaison en virgule flottante silencieuse (FUCOMP)
  -g      Arrêter la compilation groupée après n avertissements (par défaut 255)
  -h      Demande d'aide ('-h -' affiche l'ensemble de l'aide). Peut être plus spécifique : -h -V
  -i      Définir la longueur d'identificateur significative maximale (250 par défaut)
  -j      Arrêter la compilation groupée après n erreurs (valeur par défaut = 50)
* -k      Générer les cadres de pile standard
  -l      Passer des options au lieur ; exemple : -ls -l-x
  -m      Générer les informations de dépendance du makefile
  -md     Placer les informations de dépendance dans les fichiers .d, et non dans le fichier objet
  -mm     Ignorer les fichiers en-tête système en générant les infos de dépendance
  -mo     Spécifier le fichier de sortie des informations de dépendance
  -n      Définir le répertoire de sortie pour les fichiers objet
  -o      Définir le fichier de sortie (-o<fichier> ou -o <fichier> supporté)
  -pxxx   Utiliser la convention d'appel Pascal
  -q      Supprimer la bannière d'identification du compilateur
  -r      Utiliser les variables registre
  -rd     Utiliser les variables du registre seulement quand le mot-clé register est employé
  -s      Lier en utilisant le lieur non incrémentiel du système
  -t      Spécifier l'exécutable cible
* -u      Générer des traits de soulignement dans les noms de symboles
  -vxxx   Activer le débogage du source
  -w      Afficher tous les avertissements
  -w!     Renvoyer la valeur non-zéro du compilateur sur les avertissements
  -xxxx   Activer la gestion des exceptions
  -y      Déboguer avec les numéros de ligne
  -z      Options de redéfinition des noms de segment standard
Utilisez '-h <OPT>' pour obtenir de l'aide sur une option spécifique, ou
    '-h -' pour voir toutes les options disponibles.

Affichage de l'aide pour des options spécifiques, des groupes tels que -Axxx et -Vxxx

Vous pouvez obtenir des informations plus spécifiques sur les options multilettres, telles que -Axxx (compatibilité du langage et conformité aux standards) et -Vxxx (compatibilité descendante).

Pour ce faire, utilisez l'option de ligne de commande -h avec la lettre initiale du groupe d'options (telle que -A pour spécifier les options -Axxx). BCC32 affichera seulement les rubriques d'aide pour le jeu d'options spécifié (tel que -Axxx, -Vxxx ou -Wxxx).

Par exemple, pour afficher une description des options -Axxx (compatibilité du langage et conformité aux standards), utilisez les options de ligne de commande -h et -A :

C:\>bccosx -h -A
Embarcadero C++ 6.40 pour OS X Copyright (c) 1993-2011 Embarcadero Technologies, Inc.
Options disponibles (* = valeur par défaut, xxx = a des sous-options : utilisez -h -X) :
(Remarque : -X- ou -w-XXX annule généralement ce qui a été défini ou non défini par -X ou -wXXX.
 Si deux options sont en conflit, la dernière option spécifiée sera utilisée.)
  -A      Activer la conformité ANSI
  -AF     Utiliser les extensions et mots clés SUN Forte
  -AG     Utiliser les extensions et mots clés GNU
  -AK     Utiliser les mots clés et extensions Kernighan et Ritchie (K et R)
  -AT     Utiliser les extensions et mots clés CodeGear C++ (aussi -A-)
  -AU     Utiliser les extensions et les mots clé UNIX System V
  -An     Utiliser les extensions et mots clés C99
  -Ax     Réserver les mots clés pour les futures extensions C++-0x

Dans l'exemple suivant, l'aide de la ligne de commande BCCOSX affiche des détails sur toutes les options -Vxxx (compatibilité descendante) :

C:\>bccosx -h -V
Embarcadero C++ 6.40 pour OS X Copyright (c) 1993-2011 Embarcadero Technologies, Inc.
Options disponibles (* = valeur par défaut, xxx = a des sous-options : utilisez -h -X) :
(Remarque : -X- ou -w-XXX annule généralement ce qui a été défini ou non défini par -X ou -wXXX.
 Si deux options sont en conflit, la dernière option spécifiée sera utilisée.)
  -V      Options de compatibilité
* -VA     Générer toutes les fonctions globales dans leur propre segment virtuel/faible
  -VC     Ne pas substantyper la convention d'appel dans les symboles
  -VF     Compatibilité MFC
  -VF3    Supporter MFC 3.2
  -VF4    Supporter MFC 4.0
* -VI     Utiliser l'algorithme de recherche Microsoft pour les fichiers en-tête
  -VM     Compatibilité Microsoft Visual C++
* -VP     Génération de code PIC
  -Va     Supporter les arguments de classes de style ancien
  -Vb     Activer la compatibilité avec les versions 5.8.2 de Bcc et antérieures
  -Vbc    Ne pas réduire la référence ou le pointeur à la référence, ou la référence qualifiée
  -Vbe    Autoriser l'ancienne spécialisation de template explicite
  -Vbi    Suivre les règles C89
  -Vbn    Autoriser l'appel d'une fonction membre non const ou non volatile pour un objet const ou volatile
  -Vbo    Utiliser les règles de l'ancienne résolution de surcharge Borland
  -Vbr    Autoriser les anciennes règles Borland pour la liaison de références
  -Vbs    Traiter les littéraux chaîne comme non-const
  -Vbt    Utiliser les anciennes règles Borland de type pour les opérateurs ternaires
  -Vbu    Utiliser les anciennes règles Borland pour 'using' dans les templates
  -Vbx    Autoriser la spécialisation de template explicite comme une fonction membre
  -Vc     Supporter les déplacements de constructeurs
  -Vd     Utiliser des règles de portée d'instruction for C++ anciennes
  -Ve     Classes de base vides de longueur zéro
  -Vg     Désactiver l'analyseur digraphe lexical
  -Vi     Utiliser l'ancien algorithme de recherche 8.3 pour localiser les fichiers en-tête
  -Vl     Utiliser les anciennes dispositions de classe Borland
  -Vm     Options de pointeur membre
  -Vmd    Utiliser la plus petite représentation possible pour les pointeurs membre
  -Vmm    Supporter l'héritage multiple pour les pointeurs membre
  -Vmp    Honorer la précision déclarée des pointeurs membre
  -Vms    Supporter l'héritage unique pour les pointeurs membre
  -Vmv    Pas de restrictions là où peuvent pointer les pointeurs membre
  -Vn     Activer les nouveaux noms d'opérateurs : and, or, and_eq, bitand, etc.
  -Vo     Définir tous les indicateurs de compatibilité; utilisé avec le code ancien
  -Vp     Empiler 'this' en premier, comme en Pascal
  -Vr     Inverser l'ordre pour les constantes multicaractères
  -Vt     Placer le pointeur de table virtuelle au début de la disposition d'objet
  -Vv     Utiliser les pointeurs de base virtuels 'slow'
  -Vw     Emettre le code natif au lieu d'Unicode pour les caractères multi-octets
  -Vx     Membres de classe vides de longueur zéro

Chemins d'inclusion (-I, --sysinc)

BCCOSX résout les directives include en cherchant les fichiers spécifiés dans les chemins d'inclusion standard, suivis par les chemins d'inclusion distants.

Les chemins distants sont relatifs à $(SYSROOT).

$(SYSROOT) est un répertoire Windows qui représente la racine logique de la machine Mac OS X. Dans cet emplacement sont copiés (mis en cache) les fichiers d'en-tête et les bibliothèques dynamiques nécessaires à la compilation et à la liaison (voir Paclient.exe).

Les chemins d'inclusion peuvent être contrôlés avec les options suivantes :

Option

Type du chemin d'inclusion

Description

-I

standard

Définit le chemin de recherche des fichiers d'inclusion standard

--sysinc

distant

Définit le chemin de recherche des fichiers d'inclusion système (distants). $(SYSROOT) est placé devant le chemin spécifié.

Les chemins distants sont traités après les chemins standard.

BCCOSX suppose que les directives include de la forme #include </...> (crochets angulaires, chemins commençant par une barre oblique) se réfèrent à l'emplacement $(SYSROOT).

Les chemins d'inclusion les plus courants sont décrits dans le tableau suivant :

Type du chemin d'inclusion

Chemin

Description

standard

$(BDS)\include\osx\crtl

Ce répertoire contient les fichiers d'en-tête RTL C/C++ (.h) fournis par RAD Studio. Certains de ces fichiers incluent les fichiers d'en-tête C/C++ de $(SYSROOT)\usr\include. Pour de plus amples informations, voir RTL OS X C.

$(BDS)\include\osx\rtl

Ce répertoire contient les fichiers d'en-tête (.hpp) générés par la machine Delphi RTL.

distant

$(SYSROOT)\usr\include

Ce répertoire contient les fichiers d'en-tête Mac OS X RTL C/C++ mis en cache sur Windows.

Pour définir les chemins d'inclusion depuis RAD Studio, voir Répertoires et Conditions du compilateur C++ (pour les chemins d'inclusion standard) et Panneau Profils distants (pour les chemins d'inclusion distants).

Chemins de bibliothèques (-L, --syslib)

Option

Type du chemin d'inclusion

Description

-L

standard

Chemin de recherche des fichiers de bibliothèques.

--syslib

distant

Chemin de recherche des fichiers de bibliothèques relatif à $(SYSROOT).

Les chemins standard et les chemins distants des fichiers de bibliothèques sont traités dans l'ordre spécifié. Vous pouvez ainsi contrôler votre chemin de recherche des bibliothèques en entrelaçant les options -L et --syslib pour le compilateur.

Racine système (--sysroot)

SYSROOT est un répertoire de la machine Windows qui représente la racine logique de la machine distante/cible. Ce répertoire est l'endroit où les fichiers et/ou les informations symboliques de la machine distante/cible sont mis en cache. La valeur SYSROOT est utilisée par BCCOSX.EXE pour rechercher les fichiers d'inclusion et de bibliothèques.

Pour changer la valeur de SYSROOT, utilisez l'option --sysroot et spécifiez le répertoire du PC de développement où vous voulez que le cache local soit copié.

Pour définir le chemin SYSROOT depuis RAD Studio, voir Profils distants.

Options de la cible pour les applications multiplates-formes (--txxx)

BCCOSX supporte les options suivantes du compilateur multiplate-forme pour la spécification de la cible d'une compilation (les options de ligne de commande -txxx) :

Pour afficher l'aide de la ligne de commande pour les options -txxx, entrez : > bccosx -h -t.

Option Description
  • -t

Spécifier l'exécutable cible

  • -tC
  • -tCD
  • -tCDR
  • -tCDV
  • -tCR
  • -tCV
  • La cible est une application console
  • La cible est une DLL console
  • La cible est une DLL console qui utilise la RTL dynamique
  • La cible est une DLL console qui utilise la VCL
  • La cible est une application console qui utilise la RTL dynamique
  • La cible est une application console qui utilise la VCL
  • -tD

DLL (bibliothèque partagée) est la cible (.dylib sur Mac OS X)

  • -tM sur Posix
    (ou -WM sur Windows)

La cible est une application multithread

  • -tP

La cible est un package

Certaines des options -t ne sont pas supportées par BCC32, le compilateur C++ en ligne de commande pour Windows 32 bits.

Fichier BCCOSX.CFG

Le fichier de configuration pour BCCOSX contient les paramètres suivants pour le compilateur croisé :


-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

Vous pouvez créer votre propre fichier BCCOSX.CFG et l'utiliser pour la compilation. Le fichier BCCOSX.CFG personnalisé doit être placé dans le répertoire en cours d'où BCCOSX.EXE est invoqué.

Voir aussi

Versions précédentes
Autres langues