ウィキのコピーミラー

これは pascal.chat のウィキのミラーです。編集、履歴、ログインはそちらで行います。

Carbon Interface/ja

Deutsch · English · 日本語

概要

Carbon は macOS のネイティブAPIの一つです(訳注: 歴史的な事情で、マックのウィンドウシステムは複数のフレームワーク — ライブラリの集合体 — を持っています。現在では Carbon の他に Cocoa フレームワークが用いられています)。

参考

必要なもの

Carbon ウィジェットセットは、現在のところ、macOS でのデフォルトのウィジェットセットです。インストールの方法については、Installing Lazarus on macOSをご覧下さい(訳注: 以下にあるように、Lazarus snapshot を入手すれば簡単です。Sourceforge等にある0.9.26以降の安定バージョンも、macOS 用は Carbon版です)。

Carbon版Lazarusを入手する

Carbon IDE version 0.9.25 running on Tiger 10.4 注: Lazarus スナップショットのインストールを行う場合は、この節と次の節を飛ばしても構いません。スナップショットにはCarbon ウィジェットセットのソースとコンパイル済みのユニットが含まれています。

Makeファイルを使って Carbon インターフェースをコンパイルする

0.9.25 から Carbon ウィジェットセットがデフォルトのmacOS用ウィジェットセットになりました。そのため、この操作は最早必要ではありません(訳注: 0.9.24まではgtkウィジェットセットがデフォルトでした)。

ターミナルでこうタイプします:

text
make lcl LCL_PLATFORM=carbon

Makeファイルを使って Carbon版Lazarus IDE をコンパイルする

Lazarus 0.9.25 以降が必要です。

ターミナルでこうタイプします:

text
make all LCL_PLATFORM=carbon OPT="-k-framework -kCarbon -k-framework -kOpenGL"

Leopard 10.5.x では、Apple's developer pages: http://developer.apple.com/qa/qa2007/qa1567.html

text
に述べられているように、こうなります:
text
make all LCL_PLATFORM=carbon OPT="-k-framework -kCarbon -k-framework -kOpenGL -k'-dylib_file' \
    -k'/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib'"

Carbon IDEでの注意点

Lazarusを使って Carbon インターフェースをコンパイルする

ここで、Lazarusが /Users/<yourUsername>/pascal/lazarus/ にインストールしてあるとします。

text
-k-framework -kCarbon -k-framework -kOpenGL

を'Options' に追加して下さい。そうしないと、リンク中に「未解決のシンボル」エラーが発生します(_ActivateWindow のような Carbon のシンボルです)。

初めてのネイティブ Carbon アプリケーション

コンパイラオプション

Project > Compiler Options > Paths > LCL Widget Type を carbon にセットします。

これで、エラーなしにプロジェクトをコンパイルできるようになったはずです。実際に、project1 という実行ファイルができ上がりますが、これは起動してもフォーカスを当てることができません。というのも、macOSがいくつかの隠しリソースファイルを必要とするからです。

Leopard 10.5での注意: フォーラムthis で論議されたように、Leopard では次のリンカパラメタをプロジェクトに追加する必要があります:

text
-dylib_file '/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib'

(Project > Compiler Options > Linker > Pass additional options to the linker にこれを追加する場所があります)

アップルリソースファイルを作る

注: 0.9.25 Lazarus から、以下のツールを自分でコンパイルしなくても、アプリケーションバンドルを作ることができるようになりました。それに対応するボタンは Project > Project Options... > Create Application Bundle です。

コマンドラインツール:

IDE で /Users/<yourUserName>/pascal/lazarus/components/macfiles/examples/createmacapplication.lpi を開き、コンパイルします。

適当なターミナルアプリケーションを起動して、タイプします:

pascal
cd /Users/<yourUserName>/pascal/project1/
/Users/<yourUserName>/pascal/lazarus/components/macfiles/examples/createmacapplication project1
ln -s ../../../project1 project1.app/Contents/MacOS/project1

これでプログラムを起動することができるようになります(オプションのUse Application Bundle for running and debugging (darwin only)をチェックします)。IDEからでも、ファインダでアイコンをクリックしても、macOS 標準のTerminal.appで "open project1.app" としてもかまいません。

Tip: GTK実行ファイルからアプリケーションバンドルを生成するスクリプトが macOS Programming Tipsにあります。これに手を入れれば、Carbon実行ファイルに使えるようになります (X11で実行ファイルを起動する為の4命令を取る)。ここにはCarbonアプリケーション用に若干の改善を施したものがあります。

ユニバーサルバイナリを作る

Lazarus が作るアプリケーションは一種類のCPU向けですが、macOSでは、PowerPCとIntel CPUがあり得ます。ユーザのマックがどちらのCPUを用いていても同一のプログラムを実行できるように、ユニバーサルバイナリを作って配布したくなるかもしれません。このためには、配布したいアプリケーションを、PowerPCとIntelをターゲットにして、それぞれコンパイルしないければなりません。次に、コンパイルされたそれぞれのCPU向けバイナリを一緒にまとめる必要があります。そのためには macOSのプログラムである lipo を用います(Lazarusが必要とする他のツールと一緒に、Developer Tools に入っています)。例えば、アプリケーション 'myproj' の PowerPC版実行ファイルをフォルダ 'ppc' に、Intel版実行ファイルを 'intel' に置いてあるとします。この二つを一緒にするには、次のコマンドを走らせます:

text
 lipo -create ./ppc/myproj ./intel/myproj -output ./myproj

これで myproj が新しくできますから、これを .app フォルダにコピーします。


From the Free Pascal wiki, page "Carbon Interface/ja", as it stood on 2020-02-09 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

第3版、最終更新:WikiArchive 。