В одном cpp-файле я использую __DATE__
макрос для получения даты компиляции.
Это дает мне дату последней компиляции из этого файла. Но так как файл меняется не очень часто, дата в большинстве случаев старая, иногда несколько месяцев.
То, что я на самом деле хочу, это дата последней сборки проекта.
Есть ли параметр, чтобы заставить VS2010 перестраивать этот единственный cpp-файл при каждой компиляции проекта?
Независимо от изменений в файле?
Единственный способ, который я нашел до сих пор, — это изменить файл или удалить созданный obj-файл скриптом перед сборкой, я бы предпочел решение внутри VS, если это возможно.
Вы могли бы, вероятно, добавить Pre-Build Step
тот touch
(видеть это нить) файл?
Чтобы добавить Pre-Build Step
, открыть свой Project Properties
, затем Configuration Properties > Build Events > Pre-Build Event
затем добавьте командную строку, которую вы хотите выполнить в Command Line
,
Следуя предложению Амитда, по-видимому, вы также можете touch
файл с помощью PowerShell, см. этот для объяснений.
Как предложено Адрианом МакКарти в комментариях ниже, удаляя .obj
Файл будет предпочтительным в контексте, где используется контроль источника, и вы хотите сохранить .cpp
read-only
, Используя «макросы», предоставляемые Visual Studio, их можно легко удалить:
del $(TargetDir)sourcefile.obj
Цитируется из ура и hth. — Альф как еще один способ добиться этого
nmake (bundled with Visual Studio and the SDK) option /t does a touch, it was once the conventional way to do this for Windows programmers.
Вы можете добавить следующий шаг предварительной сборки, если вы просто коснетесь отметки даты в файле. +,,
это специальный флаг copy
команда, указывающая обновить временную метку файла:
copy file.cpp +,,
Как предложенный Adrian McCarthy, вы можете просто удалять объектный файл каждый раз, когда создаете проект.
Поэтому создайте событие перед сборкой, вызывая del
команда. В соответствии с Microsoft, Вы можете использовать $(IntDir)
макрос для ссылки на каталог, в котором хранится объектный файл (вы не должны использовать $(TargetDir)
макро).
У меня были проблемы с кодом возврата команды (ошибка MSB3073
), поэтому я изменил команду, чтобы всегда выход с 0
,
del $(IntDir)datefile.obj & exit 0
Создайте это событие сборки в конфигурации проекта, под Свойства конфигурации / События сборки.