プロジェクト内ファイルでの相対パス指定
テクニカル・ノート 181206J
アーキテクチャ:
All
コンポーネント:
ewgui
更新日:
2018/12/18 6:45
はじめに
プロジェクトのファイルを配置する場所と、相対パス指定に関して説明します。
解説
- プロジェクトを構成するファイルのパスは、目的により、下記の4種類になります。
- 開発ツール(Embedded Workbench)の一部として供給されるもの
Cの標準関数用のヘッダや、マイコンのI/Oの定義ファイル等です。
- ユーザサイドでの、社内標準、複数の製品間での共通データ等
こちらは、ファイルサーバーや、PC内の特定のフォルダに置かれる場合が多いと思われます。
- 上記以外の、インクルードを除くソースファイル
プロジェクトファイル(.ewp)、またはプロジェクトファイルの集合体である、ワークスペースの管理ファイル(.eww)と同じディスクにあるファイルは、.ewp/.ewwファイルからの相対パスで指定されます。それ以外(同じPCで別のディスク、またはネットワーク上のフォルダなど)は、絶対パスで指定されます。
- インクルードファイル
インクルードファイルのパスは、
#include “c:¥product¥inc¥def.h”
のように絶対バスで記述することも可能ですが、
#include “../def.h”
などと書いた場合は、
Embedded Workbenchの[ヘルプ]メニュー > [C/C++開発ガイド] > [インクルードファイル検索手順]
に書かれた手順に従いインクルードファイルが検索されます。
インクルードファイル検索手順に書かれている、-Iオプションとは、コンパイラの起動オプションのことであり、Embedded Workbenchの
[プロジェクト] > [オプション] > [C/C++コンパイラ] > [プリプロセッサ]
の追加のインクルードディレクトリのパラメータに相当します。
2. 引数変数について
引数変数は、IDE(統合環境)が使用するもので、ファイルの配置や、各ツールに与えるパラメータなどを保持します。
最もよく使われるのは、$PROJ_DIR$で、プロジェクトファイル(.ewp)のパスを保持します。上記のインクルードファイルの検索の例では、先に、プロジェクトファイルからの相対で検索したい場合、「追加のインクルードディレクトリ」に$PROJ_DIR$と書きます。
$TOOLKIT_DIR$はEWのアクティブな製品のフォルダのパスを保持します(例c:\ProgramFiles\IAR Systems\Embedded Workbench N.n\arm)。
例えば、IDE でライブラリシンボルのエクスポートを追加するには、
[プロジェクト] > [オプション] > [ビルドアクション]を選択し、
[ビルド後コマンドライン] テキストフィールドでコマンドラインを次のように指定します。
$TOOLKIT_DIR$\bin\isymexport.exe "$TARGET_PATH$"
"$PROJ_DIR$\const_lib.symbols"
まとめ
組み込みプログラムの一式は、フォルダで管理されることが多いのですが、これは、フォルダごとコピーすれば、どこでもビルド、デバッグができるようにという要請があるからだと思います。
一方で、共通データは、このフォルダに置くことが好ましくない場合があります。
インクルードファイルのパスは、絶対/相対パス等、柔軟に決定できますから、共通データのようなものを置いたり、簡単に入れ替えできることから、製品/デバッグモードの切り替え、製品のバリエーションの実現などにも利用可能かと思います。
以上のことを考慮の上、適切なファイルの配置を決定していただきますようお願いします。
全ての製品名は、それぞれの所有者の商標または登録商標です