インクリメンタル

コンパイラやリンカがインクリメンタルなので(変更されたところしかコンパイル、リンクしない)バージョン表示等に流用しているprintf("%sRelease: %s %s\r",com_Version,__DATE__,__TIME__);等がきちんと表示されない(あたりまえの現象)ことがあります、すなわちこの文章を含むモジュールが更新されたときのみ,__DATE__,__TIME__がアップデートされるので、「あれ?この前なにか変更したのに前の日付けになっている!」のような勘違いが起きます、これはCS等の環境でも同じと思います、なにか良い対策はありませんか?

Parents
  • CS+ ならビルド・ツールのプロパティに「ビルド前に実行するコマンド」というのがあるのでビルドの度に更新したい .obj については

    cmd /cdel %OutputDir%\hoge.obj
    

    等設定しておけば良いのでは。他の IDE でも同様の機能は用意されてると思います。

  • fujita nozomu さん

    HEWなんですが「ビルド前に実行するコマンド」は無いようです、

  • HEWだと、ビルドフェーズに追加を行うことで対応可能です。

  • fujita nozomu さん

    COPY /B com.c +,, というDOSコマンドでnew_com.batというファイルを作成してPhase1というフェーズで実行するようにしてこれを先頭に配置してやったところ、ビルド毎に最初にcom.cのタイムスタンプが更新されるので必ず,__DATE__,__TIME__が更新されてうまくいきました、解決です、fujita nozomu さんありがとうございました。

Reply
  • fujita nozomu さん

    COPY /B com.c +,, というDOSコマンドでnew_com.batというファイルを作成してPhase1というフェーズで実行するようにしてこれを先頭に配置してやったところ、ビルド毎に最初にcom.cのタイムスタンプが更新されるので必ず,__DATE__,__TIME__が更新されてうまくいきました、解決です、fujita nozomu さんありがとうございました。

Children
No Data