Visual Studio C ++ビルドで日付と時刻を印刷しますか?
-
03-07-2019 - |
質問
ビルドの目的で日付と時刻をどのように印刷しますか。つまり、アプリケーションのコンソールが起動したら、次のようにします:
Binary Build date: 03/03/2009 @ 10:00AM
これは、特にチーム環境において、すべてのアプリケーションがプログラマーの背後で持つ非常に便利な機能になると思います。
C ++でVisual Studio 2008を使用してこれを行う簡単な方法はありますか。ありがとう。
解決
プリプロセッサの __ DATE __
および __ TIME __
を使用します。
printf("Binary build date: %s @ %s\n", __DATE__, __TIME__);
このコードを含むcppファイルが実際にコンパイルされていることを確認するために、事前ビルドステップとしてファイルのtouch-utilityを使用します:touch file.cpp
Touch.bat:
@copy nul: /b +%1 tmp.$$
@move tmp.$$ %1
他のヒント
マクロ __ TIME __
および __ DATE __
を使用できます。二重下線に注意してください。これらはコンパイル時に展開されるため、最後のコンパイル時間がファイルに保存されます。
時刻と日付のマクロは、それらを含む特定のファイルがすべてのビルド中にコンパイルされることが保証されている場合にのみ、希望どおりに機能することに注意してください。
これを行う1つの方法は、組み込みの __ DATE __
および __ TIME __
マクロを使用することです。 MSDNから(VS 2005の場合):
__ DATE __
: 現在のソースファイルのコンパイル日。日付は、Mmm dd yyyyという形式の文字列リテラルです。月名Mmmは、TIME.Hで宣言されたライブラリ関数asctimeによって生成された日付と同じです。
__ TIME __
: 現在のソースファイルの最新のコンパイル時間。時間は、hh:mm:ss形式の文字列リテラルです。
Virneの答えと同様に、" BuildDate.h"という簡単なヘッダーファイルを作成しました。次の内容:
#define BUILD_DATE __DATE__ " " __TIME__
ビルド前のイベントで GnuWin32 タッチコマンドを使用してファイルにタッチします。
touch.exe BuildDate.h
次に、 BUILD_DATE
文字列にアクセスするコードにヘッダーファイルを含めます。例:
#include "BuildDate.h"
...
logger->Log("Build Date: " BUILD_DATE);