質問

ビルドの目的で日付と時刻をどのように印刷しますか。つまり、アプリケーションのコンソールが起動したら、次のようにします:

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);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top