(toppers-users 1728) Re: configuration ファイル:xxx.cfgの内容が反映されない理由?

SHUKUGUCHI Masahiro ms89019 @ mms.co.jp
2004年 11月 3日 (水) 13:30:29 JST


宿口です。
# 乗りかかった船なので。。。
# 外していたらごめんなさい。

リリースに含まれる、sample に別の.cfg を組込みには、カスタムビルドの設定が
要ります。(sample1.cfgと同じ内容で良いと思います。)これは、該当する.cfg
ファイルをコンフィグレーターを通して、kernel_cfg.c および kernel_id.h を
生成させるものです。

設定方法は次の通りです。

・ue_sample.cfg 選択 → 右クリック → [設定] 選択
・表示されたダイアログの[カスタムビルド]のタグを選択
・[常にカスタムビルドを使用する]をチェックする。
・カスタムビルドの[コマンド]に
 cd $(InputDir)  
 cl /E /I "../../kernel" /I "../../include" /I "../../config/windows" $(InputName).cfg | ..\..\cfg\cfg.exe -s -c -v -obj -lj -cpu windows -system msvc

を

[出力]に
 kernel_cfg.c
 kernel_id.h

を入力してください。(sample1.cfg 該当する部分をコピー、ペーストする
と良いです。)

と偉そうに書きましたが
~\doc\windows.txt の 520〜547行あたりにその旨記載されています。

−−−−−

上記設定をせずに上原さんの方法を実行(リビルド)すると、これはコンフィグ
レータが動かないので、ここでは ue_sample1.cfg が kernel_cfg.c および 
kernel_id.h に変換されません。結果として ue_sample1.cfg の内容が反映され
ないことになります。

リビルドすると、VC++ は VC++が知っている中間ファイルを削除して、ビルドを
実行します。このとき、kernel_cfg.c の中間ファイルは削除されますが、
kernel_cfg.c は残ったままです。新たな .cfg ファイルをカスタムビルド(
kernel_cfg.c などの生成)しないと、前に作成された kernel_cfg.c などを
コンパイル対象としてしまい、その結果、新たな .cfg ファイルの内容が反映
されません。

TOPPERS にとってみれば、kernel_cfg.c や kernel_id.h は中間ファイルなので
すが、VC++ にとってみれば、ソースファイルという違いが思い違いを誘発して
いるようです。

宿口雅弘