Вопрос

Как бы мне напечатать дату и время для целей сборки?Т. е.:Когда консоль для моего приложения запустится, я хочу сделать это:

Binary Build date: 03/03/2009 @ 10:00AM

Я думаю, что это было бы очень полезной функцией для всех приложений, которую можно было бы иметь за кулисами для программистов, особенно в командной среде.

Есть ли простой способ сделать это с помощью Visual Studio 2008 на C ++?Спасибо.

Это было полезно?

Решение

Используйте препроцессор __DATE__ и __TIME__.

printf("Binary build date: %s @ %s\n", __DATE__, __TIME__);

Чтобы убедиться, что cpp-файл, содержащий этот код, действительно скомпилирован, я использую touch-utility для file в качестве этапа предварительной сборки:прикосновение file.cpp

Прикосновение.летучая мышь:

@copy nul: /b +%1 tmp.$$$
@move tmp.$$$ %1

Другие советы

Вы можете использовать макросы __TIME__ и __DATE__.Обратите внимание на двойные подчеркивания.Они разворачиваются во время компиляции, и, следовательно, вы получите время последней компиляции, сохраненное в вашем файле (файлах).

Обратите внимание, что макросы time и date работают должным образом только в том случае, если конкретный файл, содержащий их, гарантированно компилируется при каждой сборке.

Одним из способов сделать это было бы использование встроенного __DATE__ и __TIME__ макросы.Из MSDN (для версии 2005):

__DATE__:Дата компиляции текущего исходного файла.Дата представляет собой строковый литерал формы Ммм дд гггг.Название месяца Mmm такое же, как и для дат, генерируемых библиотечной функцией asctime, объявленной в TIME.H.

__TIME__:Самое последнее время компиляции текущего исходного файла.Время представляет собой строковый литерал вида чч:мм:сс.

Подобно ответу Вирне, я создал простой заголовочный файл под названием "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