CMakeプログラム

ここでは、My-IoTにおけるCMakeプログラムの仕様について記載しています。

概要

My-IoTでは、CMakeでビルド可能なアプリケーションを、エッジプログラムとしてNode-REDフローと同時にインストールすることができます。 開発者は、異なるアーキテクチャでもビルドが可能な形でCMakeプロジェクトを作成する必要があります。

サポートバージョン

My-IoTエッジでは、下記のバージョンのCMakeをサポートしています。

OS

CMakeバージョン

gccバージョン

Raspberry Pi OS 10

3.16.3

8.3.0

Ubuntu 20.04

3.16.3

9.3.0

利用可能な形式

My-IoTに登録可能なプログラムの形式は以下のとおりです。

  • zipアーカイブ形式(CMakeでビルド、インストールが可能なCMakeプロジェクト)

zipアーカイブの作成方法

My-IoTに登録可能なCMakeプロジェクトのzipアーカイブの作成方法を記載します。

ディレクトリ構成

CMakeプログラムを作成する場合は、プロジェクトディレクトリを作成し、トップレベルにCMakeLists.txtが存在するディレクトリ構成としてください。プロジェクトのトップレベルでcmake .コマンドを実行して、プロジェクトのビルドが行えることを確認してください。
CMakeLists.txt以外のファイルや、下層のディレクトリ構成についての指定はありません。

.
└─ testapp
     ├─ CMakeLists.txt
     └─ …

zipアーカイブ化

My-IoTにCMakeプログラムを登録するためには、プロジェクトディレクトリをzipアーカイブ化する必要があります。
また、zipアーカイブのファイル名は、展開後のディレクトリ名と同一である必要があります。

例として、ディレクトリ構成で例に挙げた testapp ディレクトリをzipアーカイブ化する場合は、 testapp ディレクトリの一つ下の階層で下記のコマンドを実行してください。

zip testapp.zip testapp -r

ビルドとインストール

CMakeプログラムは、エッジアプリケーションのインストール時にcmakeコマンドを用いてビルド、インストールが行われます。開発者は、コマンドが実行されたときにインストールまで行われるようにCMakeプロジェクトを作成する必要があります。
zipアーカイブの展開後、展開されたディレクトリで下記のコマンドがroot権限で実行されます。

cmake . && cmake --build . && make install

例として、zipアーカイブ名が testapp.zip で、展開後のディレクトリが下記のような構成の場合、 testapp ディレクトリでコマンドが実行されます。

.
└─ testapp
     ├─ CMakeLists.txt
     └─ …

引数を付与したい場合など、デフォルト以外のコマンドでビルド、インストールを行いたい場合は、エッジプログラムの登録時にCMakeコマンドを上書きすることができます。
上書きした場合も、コマンドは展開されたディレクトリでroot権限で実行されます。
CMakeコマンドの上書きについては、 My-IoT ユーザーマニュアル を参照してください。