2

IAR で構成されたカスタム ビルド ツールがあります。テキスト ファイルを受け取り、他の C ファイルで使用される .h ファイルを出力します。.h ファイルを出力ファイルのリストに追加すると、完全な再構築の最初のステップとして削除されます。カスタム ビルド ステップは、リンク後のビルドの最後に実行されます。これにより、.h に依存する .c ファイルのコンパイルが失敗します。

もう 1 つのオプションは、カスタム ビルド ステップをプロジェクトのビルド前ステップに配置することです。ただし、.txt ファイルが変更されたかどうかにかかわらず、これは常に実行されます。

質問:

  1. IAR に .c ファイルの .h ファイルへの依存関係を認識させ、コンパイルの前にカスタム ビルド ステップを実行することはできますか?

  2. それが不可能な場合は、少なくとも最初にカスタム ビルド ステップを強制することはできますか?

4

3 に答える 3

1

私の解決策は、ビルド前のステップを一時ファイルに出力し、元のファイルが異なる場合にのみコピーすることです。ビルド前のステップは常に実行されますが、結果が前回と同じである場合、完全な再コンパイルはトリガーされません。

これをバッチ ファイルに入れて、ビルド前のステップにします。

your_prebuild_application > SVN_Revision_tmp.h

fc /b SVN_Revision_tmp.h SVN_Revision.h > nul
if errorlevel 1 goto newfile

del SVN_Revision_tmp.h
goto end

:newfile
del SVN_Revision.h
rename SVN_Revision_tmp.h SVN_Revision.h
goto end

:end
于 2012-12-04T08:35:26.127 に答える
0

IAR はファイルをアルファベット順にコンパイルするようです。私の場合、ソース ファイルは CSV ファイルであり、CSV ファイルを変更してカスタム ツールによって生成される中間ファイルは C および H ファイルです (H ファイルは他のソース ファイルによって消費されます)。

カスタム ツールによって生成された中間 C および H ファイルの名前に 00 を追加することで、これを解決しました。アルファベット順の IAR の動作により、カスタム ツールによる CSV から C/H への変換が最初に行われます。

于 2014-08-10T01:49:40.113 に答える