2

私のcmakeスクリプトでc++は、ビルド日がプログラムにコンパイルされるように、現在の日付を特定してプログラム ソースに渡します。問題は、実際にはまったく実行されていない の後続の実行で、日付が更新されないことですmakecmake

cmake変数を強制的に更新し、のみを使用してプログラムを再コンパイルするにはどうすればよいmakeですか? 代わりに:ビルド日付をバイナリにコンパイルする最良の方法は何ですか?

cmakeスクリプトには次のものが含まれます。

INCLUDE(Today)
TODAY(DATE)

ADD_DEFINITIONS(
    ...
    -DBUILD_DATE=\"${DATE}\"
)
4

1 に答える 1

2

カスタムターゲットを使用して、必要なものを実行できます。カスタム ターゲットは常に古くなっていると見なされ、すべてのビルドで実行されます。

add_custom_target(RerunCmake ${CMAKE_COMMAND} ${CMAKE_SOURCE_DIR})
add_dependencies(YourTarget RerunCmake)

これはメイクファイルで問題なく動作します。ただし、たとえば、プロジェクトファイルがディスク上で変更されたため、ビルドのたびにプロジェクトをリロードするように求めるビジュアルスタジオがあなたを悩ませます。

ビルドごとにcmakeが再実行されないように、ヘッダーファイルを正しい日付で更新するだけのカスタムターゲットを作成する方がよいかもしれません

于 2013-09-26T11:44:52.620 に答える