Compilieren und Linken einer C++-Konsolenanwendung für OS X in der Befehlszeile

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu OS X-Anwendungsentwicklung


In diesem Thema wird das Compilieren und Linken einer C++-Konsolenanwendung für OS X in der Befehlszeile beschrieben. Der Einfachheit halber werden Stapeldateien verwendet.

Tools

Zum Compilieren und Linken werden BCCOSX und XLINK verwendet. Als Speicherort für BCCOSX und XLINK wird C:\Program Files (x86)\Embarcadero\Studio\19.0\bin (der Standardinstallationspfad) vorausgesetzt.

Anleitungen

  1. Erstellen Sie ein Verzeichnis ("Arbeitsverzeichnis"). In diesem Verzeichnis müssen die folgenden Operationen ausgeführt werden (außer es ist ein anderes Verzeichnis angegeben).

  2. Erstellen Sie eine C++-Quelldatei, main.cpp, mit dem folgenden Inhalt:
    #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;
    }
    

    Dieser Code erstellt einen POSIX-Thread und führt ihn aus.

  3. Erstellen Sie eine Compiler-Einstellungsdatei, BCCOSX.CFG, mit dem folgenden Inhalt:

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


    Der --sysroot zugewiesene Pfad stellt das lokale Datei-Cache-Verzeichnis (oder das logische Stammverzeichnis) dar. Hier suchen der Compiler und der Linker nach den OS X-Headern, Bibliotheken und Frameworks. Zum Erstellen dieses Verzeichnisses mit den entsprechenden Unterverzeichnissen und Dateien müssen Sie RAD Studio verwenden:

    1. Erstellen Sie das lokale Verzeichnis C:\SDKs.
    2. Überschreiben Sie die Umgebungsvariable BDSPLATFORMSDKSDIR mit C:\SDKs.
    3. Erstellen Sie ein OS X-Verbindungsprofil.
    4. Aus der Seite Tools > Optionen > Umgebungsoptionen > SDK-Manager:
      1. Fügen Sie ein OS X SDK Ihrem Entwicklungssystem hinzu, indem das neue Verbindungsprofil verwendet wird.
      2. Nach dem Auswählen des neuen SDK ändern Sie das Lokale Stammverzeichniss in C:\SDKs\SDK1 und klicken Sie auf Lokalen Dateizwischenspeicher aktualisieren, um die SDK-Dateien von dem Remote-Computer in einen neuen Speicherort zu übernehmen.

  4. Erstellen Sie eine Stapeldatei für die Compilierung, compile.bat, mit den folgenden Befehlen:

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


  5. Erstellen Sie eine Stapeldatei zum Linken, link.bat, mit dem folgenden Inhalt:

    "C:\Program Files (x86)\Embarcadero\Studio\19.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\19.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 ,,

    Das logische Stammverzeichnis (C:\SDKs\SDK1) wird für XLINK mit der Option -Fr angegeben.

    Die OS X-Frameworks werden für XLINK mit der Option -Ff angegeben.

  6. Doppelklicken Sie auf compile.bat, um main.cpp zu compilieren. Wenn die Option -c aus der Compiler-Befehlszeile entfernt wird, dann wird der Linker nach der Compilierung aufgerufen (aber die Linker-Optionen müssen mithilfe des Compilers festgelegt werden). Die Compilierung erzeugt die main.o-Objektdatei.

  7. Doppelklicken Sei auf link.bat, um main.o mit anderen Objektdateien zu linken. Der Link-Prozess erzeugt die ausführbare Datei main.

  8. Führen Sie main auf einem Mac in einem Verzeichnis aus, das die für XLINK festgelegten dynamischen Bibliotheken enthält: libcgcrtl.dylib, libcgstl.dylib und libcgunwind.1.0.dylib.

Siehe auch