Как узнать время компиляции файла

Обновлено: 03.07.2024

Можно ли сохранить и отобразить дату компиляции моего проекта?

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

Я использую Visual Studio 2010.

Вы можете использовать макросы __DATE__ и __TIME__ - см. «Предопределенные макросы "здесь.

В качестве образца примерно так:

Вы можете даже подумать о том, чтобы превратить его в более крупный макрос или именованную переменную.

Если информация о «версии» привязана к местоположению или данным в системе управления версиями (например, номеру фиксации), также может быть идея включить эти данные в сборку с помощью шага сборки или какого-либо определения в командной строке. Также следует учитывать влияние инкрементных сборок на дату и время. Я предполагаю, что «выпускные» сборки не основаны на инкременте, или, если да, есть «прикосновение» к файлу, содержащему данные о дате и времени.

Есть макрос под названием

Что означает что-то вроде «1 апреля 2015». Это можно просто использовать. Это стандартный предопределенный макрос.

Однако в этом решении отсутствует форматирование. Конечно, вы можете разобрать его, но, возможно, есть более простое решение, более похожее на C ++.

Ваш вопрос показывает, что вы не используете систему контроля версий. Вы должны, нет никаких оправданий вроде «мой проект слишком мал, я сделаю это позже, когда буду работать над чем-то большим» или «он слишком сложен». VCS необходимо использовать каждому разработчику, когда вы начнете им пользоваться, вы не представляете, как жили раньше без него. Итак, когда вы начнете использовать VCS, у вас будет вопрос «как поместить версию comit или tag в исходный код?» Например, в svn вы можете использовать:

И svn изменит его на текущую версию фиксации. Для других систем VCS решение может быть другим, но близким, так как эта проблема очень распространена.

В этом есть ДВЕ части. Первый (уже упомянутый в ответах) - использовать __DATE__ . К сожалению, это просто сообщит вам дату компиляции этой единицы перевода. Если вам нужна дата последней сборки Visual Studio, вам необходимо принудительно перестроить модуль перевода, содержащий __DATE__

Одно из простых решений - всегда обновлять время файла этой единицы перевода. Скажем, вам нужно решение Иоахима, затем вы создаете отдельный файл builddate.cpp с

На этапе пост-сборки вызовите copy /b builddate.cpp+,, . Это означает, что после каждой сборки файл builddate.cpp становится новее исполняемого файла и будет перекомпилирован при следующей сборке.

В Linux для этого можно использовать touch .

C ++ указывает, что существует специальный макрос препроцессора, называемый __DATE__ , который представляет собой строковый литерал, указывающий, когда произошла компиляция. Также есть соответствующий макрос __TIME__ .

Читайте также: