Compilation et liaison d'une application console macOS C++ depuis la ligne de commande

De RAD Studio
Aller à : navigation, rechercher

Remonter à Développement d'applications macOS


Cette rubrique décrit comment compiler et lier une application console C++ pour macOS depuis la ligne de commande. Les fichiers de commandes sont utilisés par commodité.

Outils

BCCOSX et XLINK sont utilisés pour la compilation et la liaison. L'emplacement de BCCOSX et XLINK est considéré comme étant C:\Program Files (x86)\Embarcadero\Studio\21.0\bin (le chemin d'installation par défaut).

Instructions

  1. Créez un répertoire ("répertoire de travail"). Les opérations suivantes doivent être effectuées dans ce répertoire, à moins qu'un autre répertoire soit spécifié.
  2. Créez un fichier source C++, main.cpp, avec le contenu suivant :
    #include <tchar.h>
    #include <stdio.h>
    #include <pthread.h>
    
    void *thread_routine(void *arg) {
            printf("\nThread data pointer: %p", arg);
            return NULL;
    }
    
    int _tmain(int argc, _TCHAR* argv[]) {
            pthread_t t;
            char data[1 << 4]; // 16 bytes
            int result;
    
            result = pthread_create(&t, NULL, thread_routine, data); // create thread
            // verify result ...
            // perform concurrent operations
    
            result = pthread_join(t, NULL); // wait for thread to complete
            // verify result ...
    
            return 0;
    }
    

    Ce code crée et exécute un thread POSIX.

  3. Créez un fichier de paramètres de compilation, BCCOSX.CFG, avec le contenu suivant :

    --sysroot="C:\SDKs\SDK1"
    -I"C:\Program Files (x86)\Embarcadero\Studio\21.0\include\osx";"C:\Program Files (x86)\Embarcadero\Studio\21.0\include\osx\crtl";"C:\Program Files (x86)\Embarcadero\Studio\21.0\include\osx\rtl";
    -L"C:\Program Files (x86)\Embarcadero\Studio\21.0\lib\osx32\release"
    --syslib=/usr/lib
    --sysinc=/usr/include
    -F/System/Library/Frameworks
    


    Le chemin assigné à --sysroot représente le répertoire cache du fichier local (ou le répertoire racine logique). Le compilateur et le lieur y rechercheront les frameworks, les bibliothèques et les en-têtes macOS. Pour créer ce répertoire avec les sous-répertoires et fichiers correspondants, RAD Studio doit être utilisé :

    1. Créez un répertoire local C:\SDKs
    2. Redéfinissez la variable d'environnement BDSPLATFORMSDKSDIR avec C:\SDKs
    3. Créez un profil de connexion macOS.
    4. Dans Outils > Options > Options d'environnement > Gestionnaire de SDK :
      1. Ajoutez un SDK macOS à votre système de développement en utilisant votre nouveau profil de connexion.
      2. Une fois le nouveau SDK sélectionné, changez le répertoire racine local en C:\SDKs\SDK1, puis cliquez sur Mettre à jour le cache des fichiers locaux pour récupérer les fichiers SDK sur la machine distante et les placer au nouvel emplacement.


  4. Créez un fichier de commandes pour la compilation, compile.bat, avec les commandes suivantes :

    "C:\Program Files (x86)\Embarcadero\Studio\21.0\bin\bccosx" -c main.cpp


  5. Créez un fichier de commandes pour la liaison, link.bat, avec le contenu suivant :

    "C:\Program Files (x86)\Embarcadero\Studio\21.0\bin\xlink" -Fr"C:\SDKs\SDK1" -Fp"/usr/lib" -Fp"/usr/lib/system" -Fp"/System/Library/Frameworks" -FfAppKit -FfApplicationServices -FfCarbon -FfCoreFoundation -FfCoreServices -FfDiskArbitration -FfFoundation -FfIOKit -FfSecurity -j"C:\Program Files (x86)\Embarcadero\Studio\21.0\lib\osx32\release" -Tme start.o main.o, main ,, libcgcrtl.dylib libcgcrtl_nonshared.a libcgstl.dylib libcgunwind.1.0.dylib libSystem.B.dylib libiconv.dylib ,,

    Le répertoire racine logique (C:\SDKs\SDK1) est spécifié à XLINK par l'option -Fr.

    Les frameworks macOS sont spécifiés à XLINK par l'option -Ff.

  6. Double-cliquez sur compile.bat pour compiler main.cpp. Si l'option -c est retirée de la ligne de commande du compilateur, le lieur est alors invoqué après la compilation (mais les options de liaison doivent être spécifiées à l'aide du compilateur). La compilation produit le fichier objet main.o.

  7. Double-cliquez sur link.bat pour lier main.o aux autres fichiers objet. La liaison produit le fichier exécutable main.
  8. Exécutez main sur le Mac dans un répertoire qui contient les bibliothèques dynamiques spécifiées à XLINK : libcgcrtl.dylib, libcgstl.dylib et libcgunwind.1.0.dylib.

Voir aussi