Utiliser le compilateur en ligne de commande

Introduction

Le compilateur est situé dans le sous-dossier 'compilers' du dossier PureBasic. La manière la plus simple d'y accéder est d'ajouter ce répertoire à la variable PATH, ce qui vous donnera un accès permanent à toutes les commandes de ce répertoire.

Il existe deux compilateurs pour PureBasic :
- 'pbcompiler' qui génère du code assembleur (x86 et x64).
- 'pbcompilerc' (ou 'pbcompiler' sur une plate-forme qui ne prend pas en charge le backend d'assemblage) qui génère du code C.

Le compilateur backend C est disponible sur toutes les plateformes prises en charge, tandis que le compilateur backend ASM n'est pris en charge que sur Windows (x86, x64), Linux (x86, x64) et OS X (x64).

Paramètres du compilateur (multi-plateforme)

Note: Tous les noms de commutateurs commençant par '/' ne sont valides que sous Windows (Par exemple : '/DEBUGGER'). Si vous avez besoin d'écrire une ligne de commande multiplateforme, vous pouvez utiliser le format '-' ou '--' (comme : '-d' ou '--debugger).

-h, --help, /? : affiche une aide simplifiée sur le compilateur.

-d, --debugger, /DEBUGGER : active le débogueur.

-pf, --purifier, /PURIFIER: active le purifier. Le debugger doit être activé pour faire fonctionner le purifier.

-o, --output, /OUTPUT "Fichier" : crée un fichier exécutable ou une DLL indépendant ayant pour nom 'Fichier' et enregistré dans le chemin désiré. Sur MacOS X, il est possible de créer un ensemble d'applications en ajoutant ".app" dans le nom de l'exécutable. De cette façon, toute la structure de répertoire sera créé automatiquement.

-r, --resident, /RESIDENT "Fichier" : crée un fichier résident ayant pour nom 'Fichier'.

-i, --import, /IMPORT "Fichier": crée un fichier d'importation au nom de fichier donné. Seulement un seul bloc Import/EndImport autorisé dans le fichier. Les fonctions importées seront chargées automatiquement pour tous les projets de PureBasic.

-l, --linenumbering, /LINENUMBERING: ajoute des informations concernant les lignes et les fichiers sources à l'exécutable, qui peut le ralentir considérablement. Ce qui permet à la bibliothèque OnError d'indiquer le fichier et le numéro de ligne en cas d'erreur.

-q, --quiet, /QUIET: désactive toutes les éditions de texte inutiles. Très pratique lorsque vous utilisez un éditeur tiers. -sb, --standby, /STANDBY: charge le compilateur en mémoire, en attente de commandes externes (éditeurs, scripts...). Plus d'informations sur l'utilisation de ce paramètre est disponible dans le fichier 'CompilerInterface.txt' du répertoire 'SDK' de PureBasic.

-ir, --ignoreresident, /IGNORERESIDENT "Fichier": ne charge pas le fichier résident au démarrage du compilateur. C'est utile pour mettre à jour un fichier résident déjà existant.

-co, --constant, /CONSTANT Nom=Valeur: crée la constante spécifiée avec la valeur indiquée.
Exemple: 'pbcompiler test.pb /CONSTANT MaConstante=10'. La constante #MaConstante sera créée automatiquement avec la valeur 10 avant de commencer la compilation.

-t, --thread, /THREAD: utilise les routines thread-safe pour toutes la gestion des chaînes de caractères et pour toutes les commandes.

-s, --subsystem, /SUBSYSTEM "Nom": utilise le sous-système spécifié pour remplacer des commandes internes. Pour plus d'informations, voir sous-systèmes. -k, --check, /CHECK: vérifie la syntaxe uniquement, ne créer pas ni ne lance l'exécutable.

-z, --optimizer, /OPTIMIZER: Active l'optimiseur de code.

-c, --commented, /COMMENTED : Crée un fichier de sortie commenté 'purebasic.asm' ou 'purebasic.c' lors de la création d'un exécutable. Ce fichier peut être réassemblé avec l'option '--reasm' même après des modifications. Cette option est réservée aux programmeurs avancés.

-ra, --reasm, /REASM : Réassemble le fichier 'purebasic.asm' ou 'purebasic.c' et crée un exécutable. Cela permet d'utiliser l'option '--commented', de modifier la sortie générée et de créer à nouveau l'exécutable.
Cette option est réservée aux programmeurs avancés.

-pp, --preprocess, /PREPROCESS "Fichier": Prétraite le code source et écrit la sortie dans le "Fichier" spécifié.
Le fichier traité est un fichier unique avec toutes les macro déployées, les directives de compilation sont prises en compte et le multiligne intégré. Cela permet une analyse plus facile d'un fichier source PureBasic, car tout est déployé et disponible dans un format de fichier plat 'flat'. Les commentaires ne sont pas inclus par défaut, sauf avec l'option /COMMENTED. Le fichier prétraité peut être recompilé comme n'importe quel autre fichier source PureBasic pour créer l'exécutable final.

-g, --language, /LANGUAGE \"language\": utilise la langue spécifiée pour les messages d'erreur du compilateur.

-v, --version, /VERSION: Affiche la version du compilateur.

Exemples:
    CLI> pbcompiler codesource.pb
  
Le compilateur compile le code 'codesource.pb' et l'exécute.

    CLI> pbcompiler codesource.pb /DEBUGGER
  
Le compilateur compile le code 'codesource.pb' et l'exécute avec le débogueur actif.

Paramètres du compilateur spécifiques à Windows

/ICON "Icone.ico" : ajoute l'icône spécifiée dans l'exécutable.

/CONSOLE: le fichier de sortie est au format Console. Le format par défaut est Win32.

/DLL: le fichier de sortie est une DLL.

/XP: ajoute le support des thèmes ('skins') pour Windows XP.

/MMX, /3DNOW, /SSE or /SSE2: génère un exécutable spécifique à un type de processeur. Si une routine est disponible dans une version optimisée pour le type de processeur choisi, elle sera utilisée. Du coup, l'exécutable ne fonctionnera correctement que sur ce type de processeur.

/DYNAMICCPU: génère un exécutable qui contient toutes les versions des routines spécialement optimisées pour un type de processeur. Quand le programme se lance, il déterminera dynamiquement le type du processeur et choisira les routines les plus adaptées. Cela produit un exécutable plus gros mais plus rapide.

/RESOURCE "Fichier": ajoute un fichier de resource Windows (.rc) à l'exécutable ou la DLL. Ce fichier ne doit pas être un fichier resource compilé, mais un fichier texte contenant des directives. Il est possible de ne specifier qu'un seul fichier resource, mais il peut en inclure d'autre si besoin est, à l'aide des directives adéquates.
/LINKER "FichierCommandes": spécifie un fichier qui contient des commandes à passer directement au linker. Sur Windows, PureBasic utilise le linker de PellesC (polink), plus d'informations à propos des options possible sont disponible dans l'aide de PellesC.

Les deux options de compilation suivantes sont nécessaires pour créer des programmes fonctionnant sur Microsoft Vista ou au-dessus (Windows 7/8/10). Ces deux options sont en rapport avec le 'manifeste' inclus, donc elles sont ignorées avec les versions plus anciennes de Windows. Si aucune de ces deux options ne s ont utilisées, l'exe s'exécutera en tant qu'utilisateur normal, mais avec la virtualisation activée (redirection du registre et des fichiers). Il est recommandé d'utiliser le commutateur /USER pour désactiver la virtualisation pour tous les programmes qui ont les privilèges d'utilisateur standard, car c'est seulement destinés à la compatibilité des programmes plus anciens. Ces options sont également disponibles dans le menu Compilateur/Options du compilateur de l'IDE.

/ADMINISTRATOR: oblige le programme à demander des privilèges d'administrateur au démarrage. Le programme ne fonctionnera pas sans ça. Cette option est nécessaire. Note: Vous pouvez également déboguer les programmes avec cette option, mais seulement avec la version autonome du débogueur (car il doit fonctionner avec des droits élevés lui aussi).

/USER: le programme sera exécuté avec les droit de l'utilisateur qui l'a lancé. Virtualisation pour l'exe est désactivée.

/DPIAWARE: Activer le support DPI sur l'exécutable.


Exemples:
    CLI> pbcompiler "C:\Project\Source\DLLSource.pb" /EXE "C:\Projet\projet.dll" /DLL
  
Le compilateur compile le code 'DLLSource.pb' (ici avec le chemin complet) et crée la DLL "projet.dll" à l'emplacement indiqué.

Paramètres du compilateur spécifiques à Linux

-so ou --sharedobject "fichier": Créer une bibliothèque dynamique (objet partagé).

-h ou --help: affiche une aide simplifiée sur le compilateur.

-mmx, -3dnow, -sse ou -sse2: génère un exécutable spécifique à un type de processeur. Si une routine est disponible dans une version optimisée pour le type de processeur choisi, elle sera utilisée. Du coup, l'exécutable ne fonctionnera correctement que sur ce type de processeur.

-dc ou --dynamiccpu: génère un exécutable qui contient toutes les versions des routines spécialement optimisées pour un type de processeur. Quand le programme se lance, il déterminera dynamiquement le type du processeur et choisira les routines les plus adaptées. Cela produit un exécutable plus gros mais plus rapide.

Paramètres du compilateur spécifiques à OSX

-dl ou --dylib "Fichier": crée une bibliothèque dynamique (dylib).

-n ou --icon "Icone.icns": ajoute une icon à l'application.

-f ou --front: met le processus à l'avant plan lors de son lancement.

-ibp ou --ignorebundlepath: ne pas utiliser le chemin du bundle comme répertoire courant.