SOLID-IDE を使う上で必要な基本的概念や用語

ここでは、SOLID-IDE を使う上で理解しておくべき基本概念や用語を説明します。

ソリューションとプロジェクト

ソリューション

ソリューションは、プロジェクトの集合体です。ソリューションをビルドすることで、必要なプロジェクトのビルドが行われ、ロードモジュールが生成されます。

ソリューションには必ずスタートアッププロジェクトと言われるものが必要です。必ずしも、最初に実行されるモジュールが含まれるプロジェクトではありませんが、 SOLID-IDE はスタートアッププロジェクトプロジェクトに設定されているデバッグプロパティを参照して、デバッガを起動します。

ただし、SOLID では、ローダブルアプリやDLLも、それぞれソリューションをビルドすることで生成されます。この場合には、ローダブルアプリやDLL単独でデバッグすることはないので、 スタートアッププロジェクトは必要ありません。

プロジェクト

プロジェクトは、ソリューションを構成するいくつかのまとまった機能をビルドする単位です。作られるものは、最終的なロードモジュール(.out) であったり、静的ライブラリ(.a)であったりします。 SOLID-OS のソリューションは、boot, core (SOLIDコアサービス), rtos (TOPPERSカーネル), アプリ 等のプロジェクトから構成されます。

プロジェクトには、そのプロジェクトを構成するソースファイルやヘッダファイル等が含まれます。

また、ソリューションでは、Make で使うような依存関係を、プロジェクトの依存関係として設定する必要があります。例えば、最終的なロードモジュール(.out) を生成するプロジェクトが、 他の静的ライブラリ(.a)に依存するといった関係です。 タイムスタンプベースで比較され、ソースが更新されれば再コンパイルされ、それを含むプロジェクトが再ビルドされ、それに依存する プロジェクトも再ビルドされるということになります。

プロジェクトの依存関係設定画面の例

../../_images/project-dependency.png

ソリューションエクスプローラ

SOLID-IDE 上は、オープンしているソリューション、それに含まれるプロジェクト、各プロジェクトに含まれるソースファイルが一覧できる「ソリューションエクスプローラ」があります。

ソリューションエクスプローラの一例

../../_images/solution-explore.png

赤枠で囲まれた部分がソリューション、その下が、ソリューションに含まれるプロジェクトの一覧です。 プロジェクトをクリックして開くと、プロジェクトを構成するソースファイル等(水色の枠で囲まれた)が表示されます。

ソリューション、プロジェクト、ファイルをマウスで右クリックすると、それぞれに対する操作や設定値の参照変更等が行われるポップアップメニューが表示されます。

注釈

上の例で drivers というのは、フィルターと呼ばれます。便宜上ソリューションを整理するために設定されるもので、実際のディスク上のディレクトリ構造とは直接関係ありません。

プラットフォームと構成

プラットフォーム

プラットフォームは、ソリューションやプロジェクトをビルドする際に使用する基本アーキテクチャです。

SOLID-OSのビルド環境では、Cortex-A AArch32 の際に使う KMC_SOLID_v7A_ARM と、Coretex-A AArch64 の際に使う KMC_SOLID_v8A_AArch64 があります。

SOLID-IDE上でベアメタル開発を行う場合は AArch32 の際に使う SOLID_ARM と AArch64 の際に使う SOLID_AARCH64 があります。

構成

構成は、ソリューションやプロジェクトをビルド際に使用する、設定やオプション等をセットにして名前をつけたものです。

SOLID-OS のビルド環境では、GCC コンパイラ系 の Debug (最適化なしデバッグ用), Release (最適化あり) と Clang コンパイラ系の Debug_clang (最適化なしデバッグ用), Release_clang (最適化あり), Debug_tasan (最適化なし、かつ、アドレスサニタイザ有効化ビルド) があります。

../../_images/config-and-platform.png

注釈

ソリューションビルド時には、構成とプラットフォームを必ず両方指定する必要があります。また、基本的にはソリューションの構成&プラットフォームと、 各プロジェクトの構成&プラットフォームの設定は、同一に揃えてビルドしてください(特殊な場合を除く)