Gears/Gearsの中心的なプロジェクトparallel_execution
の入門
# 例題を追加したい
parallel_execution
の例題はCMakeでビルドされている。
新しい例題(プロジェクト)を追加したい場合は、CMakeLists.txtに追記する必要がある。
# CMakeLists.txtへの追記
ファイル末尾に次のような記述をする。
|
|
GearsCommand
はCMakeのマクロであり、ここにターゲット名と必要なソースを列挙することでビルド対象に加わる。
マクロの意味は次の通り。
TARGET
- プロジェクトの名前。
make sample
などでビルド出来るようになり、生成されたバイナリの名前にもなる
- プロジェクトの名前。
SOURCES
- プロジェクトに含める
.cbc
や.c
などのCファイル - ヘッダはここに含めない
- プロジェクトに含める
# 必ずいれないといけないCbCのソース
ContextやTaskManager関連の操作で必須となる
TaskManagerImpl.cbc
CPUWorker.cbc
SynchronizedQueue.cbc
AtomicReference.cbc
# プロジェクトを始める
examples
の下にディレクトリを作成し、その中にmain.cbc
を置く
- 別に
main.cbc
である必要は無いけれど、わかりやすい - 他の
.cbc
もそのディレクトリ中に置く- Gears全体に関わるものはトップディレクトリ(
CMakeLists.txt
があるディレクトリ)に置く
- Gears全体に関わるものはトップディレクトリ(
# Interfaceを書く
Interfaceを使いたい場合は(当然だけど)型定義から始める必要がある
- context.hへは自動で付け加えられる
生成用のPerlスクリプトがあるので、それを使うと最低限の雛形が生成される
perl tools/static_gen_header.pl --interface ExampleInterface
-w
をつけるとファイル生成してくれる-o
の後にファイル名とパスを指定できる- static_gen_header.plが置いてある場所はプロジェクトごととかで異なるので頑張って探す
Interfaceの詳しい書き方はInterface入門を見ること
# Interfaceの実装の型
生成用のPerlスクリプトがあるので、それを使うと(ry
perl tools/static_gen_header.pl --interface ExampleInterface --impl ExampleInterfaceImpl
-w
をつけるとファイル生成してくれる-o
の後にファイル名とパスを指定できる- static_gen_header.plが置いてある場所はプロジェクトごととかで異なるので頑張って探す
# 実装のcbcを作る
生成用のPerlスクリプトがあるのd(ry
perl tools/trans_impl.pl examples/sample/ExampleInterfaceImpl.h
- 実装のヘッダファイルを入力する
- オプションは
trans_impl
と同じ様な世界観