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

注釈

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