Как узнать время компиляции файла
Обновлено: 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__ .
Читайте также: