コマンド ラインからの OS X C++ コンソール アプリケーションのコンパイルとリンク
Mac OS X アプリケーション開発 への移動
このトピックでは、Mac OS X 用 C++ コンソール アプリケーションをコマンド ラインからコンパイルし、リンクする方法について説明します。 バッチ ファイルを使用すると便利です。
ツール
BCCOSX および XLINK は、コンパイルし、リンクするために使用されます。 BCCOSX と XLINK の場所は、C:\Program Files (x86)\Embarcadero\Studio\17.0\bin
(デフォルト インストール パス)を想定しています。
手順
- ディレクトリ("作業ディレクトリ")を作成します。 次の操作をこのディレクトリ(別のディレクトリが指定されている場合を除く)で実行する必要があります。
- 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 スレッドを作成し、実行します。
- コンパイラ設定ファイル BCCOSX.CFG を作成し、次の内容を記述します:
--sysroot="C:\SDKs\SDK1" -I"C:\Program Files (x86)\Embarcadero\Studio\17.0\include\osx";"C:\Program Files (x86)\Embarcadero\Studio\17.0\include\osx\crtl";"C:\Program Files (x86)\Embarcadero\Studio\17.0\include\osx\rtl"; -L"C:\Program Files (x86)\Embarcadero\Studio\17.0\lib\osx32\release" --syslib=/usr/lib --sysinc=/usr/include -F/System/Library/Frameworks
--sysroot
に割り当てられたパスは、ローカルの ファイル キャッシュ ディレクトリ(論理ルート ディレクトリ)を表わします。 ここで、コンパイラとリンカは、Max OS X ヘッダー、ライブラリ、およびフレームワークを検索します。 このディレクトリを、対応するサブディレクトリとファイルとともに作成するには、次のとおり、RAD Studio を使用する必要があります。- ローカル ディレクトリ
C:\SDKs
を作成する - 環境変数
BDSPLATFORMSDKSDIR
をC:\SDKs
をオーバーライドする - OS X 接続プロファイルを作成する。
- ツール > オプション... > 環境オプション > SDK マネージャ から:
- 新しい接続プロファイルを使用して、自分の開発システムにOS X SDK を追加します。
- 新しい SDK が選択された状態で、ローカル ルート ディレクトリ を
C:\SDKs\SDK1
に変更し、[ローカル ファイルのキャッシュの更新]をクリックして、SDK ファイルを、リモート マシンからその新しい場所に取得します。
- ローカル ディレクトリ
- コンパイル用バッチ ファイル compile.bat を作成し、次の内容を記述します:
"C:\Program Files (x86)\Embarcadero\Studio\17.0\bin\bccosx" -c main.cpp
- リンク用バッチ ファイル link.bat を作成し、次の内容を記述します:
"C:\Program Files (x86)\Embarcadero\Studio\17.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\17.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
オプションで指定します。Mac OS X フレームワークを、XLINK に対して
-Ff
オプションで指定します。
- compile.bat をダウブルクリックし、main.cpp をコンパイルします。
-c
オプションをコンパイラのコマンド ラインで指定しないと、リンカはコンパイル後に起動されます(コンパイラで利用するため、リンク オプションを指定することが必要)。 コンパイルにより、main.o オブジェクト ファイルが生成されます。
- [link.bat]をダブルクリックして、main.o を他のオブジェクト ファイルとリンクします。 リンクにより、main 実行可能ファイルが生成されます。
- Mac 上で、main を、XLINK に指定された次のダイナミック ライブラリ群を含むディレクトリで実行します: libcgcrtl.dylib、libcgstl.dylib、libcgunwind.1.0.dylib。