プロジェクト内ファイルでの相対パス指定

テクニカル・ノート 181206J

アーキテクチャ:

All

コンポーネント:

ewgui

更新日:

2018/12/18 6:45

はじめに

プロジェクトのファイルを配置する場所と、相対パス指定に関して説明します。

解説

  1. プロジェクトを構成するファイルのパスは、目的により、下記の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"

 

まとめ

組み込みプログラムの一式は、フォルダで管理されることが多いのですが、これは、フォルダごとコピーすれば、どこでもビルド、デバッグができるようにという要請があるからだと思います。

一方で、共通データは、このフォルダに置くことが好ましくない場合があります。
インクルードファイルのパスは、絶対/相対パス等、柔軟に決定できますから、共通データのようなものを置いたり、簡単に入れ替えできることから、製品/デバッグモードの切り替え、製品のバリエーションの実現などにも利用可能かと思います。

 以上のことを考慮の上、適切なファイルの配置を決定していただきますようお願いします。

 

全ての製品名は、それぞれの所有者の商標または登録商標です

 

申し訳ございませんが、弊社サイトではInternet Explorerをサポートしていません。サイトをより快適にご利用いただくために、Chrome、Edge、Firefoxなどの最新ブラウザをお使いいただきますようお願いいたします。