コマンド ラインからの macOS C++ コンソール アプリケーションのコンパイルとリンク

提供: RAD Studio
移動先: 案内検索

MacOS アプリケーション開発 への移動


このトピックでは、macOS 用 C++ コンソール アプリケーションをコマンド ラインからコンパイルし、リンクする方法について説明します。 バッチ ファイルを使用すると便利です。

ツール

BCCOSX および XLINK は、コンパイルし、リンクするために使用されます。 BCCOSX と XLINK の場所は、C:\Program Files (x86)\Embarcadero\Studio\22.0\bin (デフォルト インストール パス)を想定しています。

手順

  1. ディレクトリ("作業ディレクトリ")を作成します。 次の操作をこのディレクトリ(別のディレクトリが指定されている場合を除く)で実行する必要があります。
  2. C++ ソース ファイル main.cpp を作成し、次の内容を記述します:
    #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;
    }
    

    このコードは、POSIX スレッドを作成し、実行します。

  3. コンパイラ設定ファイル BCCOSX.CFG を作成し、次の内容を記述します:

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


    --sysroot に割り当てられたパスは、ローカルの ファイル キャッシュ ディレクトリ(論理ルート ディレクトリ)を表わします。 ここで、コンパイラとリンカは、macOS ヘッダー、ライブラリ、およびフレームワークを検索します。 このディレクトリを、対応するサブディレクトリとファイルとともに作成するには、次のとおり、RAD Studio を使用する必要があります。

    1. ローカル ディレクトリ C:\SDKs を作成する
    2. 環境変数 BDSPLATFORMSDKSDIRC:\SDKs をオーバーライドする
    3. macOS 接続プロファイルを作成する
    4. ツール > オプション... > 環境オプション > SDK マネージャ から:
      1. 新しい接続プロファイルを使用して、自分の開発システムにmacOS SDK を追加します
      2. 新しい SDK が選択された状態で、ローカル ルート ディレクトリC:\SDKs\SDK1 に変更し、[ローカル ファイルのキャッシュの更新]をクリックして、SDK ファイルを、リモート マシンからその新しい場所に取得します。


  4. コンパイル用バッチ ファイル compile.bat を作成し、次の内容を記述します:

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


  5. リンク用バッチ ファイル link.bat を作成し、次の内容を記述します:

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

    論理ルート ディレクトリ(C:\SDKs\SDK1)を XLINK に対して -Fr オプションで指定します。

    macOS フレームワークを、XLINK に対して -Ff オプションで指定します。

  6. compile.bat をダウブルクリックし、main.cpp をコンパイルします。 -c オプションをコンパイラのコマンド ラインで指定しないと、リンカはコンパイル後に起動されます(コンパイラで利用するため、リンク オプションを指定することが必要)。 コンパイルにより、main.o オブジェクト ファイルが生成されます。

  7. [link.bat]をダブルクリックして、main.o を他のオブジェクト ファイルとリンクします。 リンクにより、main 実行可能ファイルが生成されます。
  8. Mac 上で、main を、XLINK に指定された次のダイナミック ライブラリ群を含むディレクトリで実行します: libcgcrtl.dylib、libcgstl.dylib、libcgunwind.1.0.dylib。

関連項目