3.1 CMake
ここまでの作業でConsoleInFloatの雛型が生成されました。
次の作業としてCMakeを利用してビルド環境のConfigureを行います。
スタートメニューからCMake (cmake-gui)を起動します。
画面上部に以下のテキストボックスがあります。
・Where is the source code
・Where to build the binaries
「Where is the source code」にCMakeLists.txtがある場所、「Where to build the binaries」にビルドディレクトリを指定します。
CMakeLists.txtはデフォルトでは、<ワークス ペースディレクトリ>/ ConsoleInFloatに存在します。
ビルドディレクトリとは、ビルドするためのプロジェクトファイルやオブジェクトファイル、バイナリを格納する場所のことです。場所は任意ですが、この場合<ワークスペースディレクトリ>/ConsoleInFloat/buildのように分かりやすい名前をつけたConsoleInFloatのサブディレクトリを指定することをお勧めします。
ディレクトリは自動で生成されるので指定前に作成する必要はありません。
今回は以下のディレクトリを指定してください。
Where is the source code |
C:\rtcws\ConsoleInFloat |
Where to build the binaries |
C:\rtcws\ConsoleInFloat\build |
図 3-1 CMake指定したら、下のConfigureボタンを押します。すると下図のようなダイアログが表示されますので、生成したいプロジェクトの種類を指定します。
図3-2 CMakeプロジェクト選択画面・Specifty the generator for project
Visual Studioバージョン |
生成したいプロジェクトの種類 |
Visual Studio 2013 |
Visual Studio 12 2013 |
Visual Studio 2015 |
Visual Studio 14 2015 |
Visual Studio 2017 |
Visual Studio 15 2017 |
Visual Studio 2019 |
Visual Studio 16 2019 |
・Optional platform for generator
オペレーション |
選択 |
32 bit |
win32 |
64 bit |
x64 |
※空欄のまま実行すると64bitで実行されます。
ダイアログでFinishを押すとConfigureが始まります。問題がなければ下部のログウインドウにConfiguring doneと出力されますので、続けてGenerateボタンを押します。Generating doneと表示されればプロジェクトファイル・ソリューションファイル等の出力が完了します。
3.2 ひな型作成時の宣言とプログラムの変数の関係
OpenRTPで設定したポート名と変数名は、C++のプログラムでは以下の変数名で定義されます。
InPort |
ポート名 |
m_変数名In |
変数名 |
m_変数名 |
OutPort |
ポート名 |
m_変数名Out |
変数名 |
m_変数名 |
ポート名はビルドビューで使用されます。
そのため、このプログラムでは以下の変数名で定義されています。
ポート名 |
m_outfloatOut |
変数名 |
m_outfloat |
今回OpenRTPで指定したポートの変数はRTC::TimedFloat型になります。
RTC::TimedFloat型は、以下の構造体で定義されています。
データ型 |
変数 |
意味 |
float |
data |
floatの値 |
RTC::time |
tm |
タイムスタンプ |
floatの値を代入するには、以下のように記述します。
3.3 VisualStudioでソースコードを編集
先ほど指定したbuildディレクトリの中のConsoleInFloat.slnをダブルクリックしてVisual Studioを起動します。
図3-1 Visual Studio :起動画面
ConsoleInFloat.cppを開き、onActivated(), onDeactivated(), onExecute()を実装します。
onActivated()
RTC::ReturnCode_t ConsoleInFloat::onActivated(RTC::UniqueId ec_id)
{
std::cout << " ConsoleInFloat onActivated" << std::endl;
return RTC::RTC_OK;
}
onDeactivated()
RTC::ReturnCode_t ConsoleInFloat::onDeactivated(RTC::UniqueId ec_id)
{
std::cout << " ConsoleInFloat Deactivated" << std::endl;
return RTC::RTC_OK;
}
onExecute()
RTC::ReturnCode_t ConsoleInFloat::onExecute(RTC::UniqueId ec_id)
{
float num = 0;
std::cout << "Plase input float number"; std::cin >> num;
std::cout << "Output float number :" << num << std::endl;
m_outfloat.data = num;
m_outfloatOut.write();
return RTC::RTC_OK;
}
編集を終えたら保存をしてください。
以下のように右クリックでコンポーネントのビルドをするか、画面上部の[BUILD]から[Build Solution]を選択してビルドをしてください。ビルドが終了すればコンポーネントが生成されます。
図3-2 Visual Studio :ビルド
C:\rtcws\ConsoleInFloat\build\src\Debug に生成されたConsoleInFloatComp.exeをダブルクリックで起動させます。
問題なく起動できることを確認してください。