заставить MS VS2010 перестраивать один cpp-файл при каждой сборке

В одном cpp-файле я использую __DATE__ макрос для получения даты компиляции.

Это дает мне дату последней компиляции из этого файла. Но так как файл меняется не очень часто, дата в большинстве случаев старая, иногда несколько месяцев.

То, что я на самом деле хочу, это дата последней сборки проекта.

Есть ли параметр, чтобы заставить VS2010 перестраивать этот единственный cpp-файл при каждой компиляции проекта?
Независимо от изменений в файле?

Единственный способ, который я нашел до сих пор, — это изменить файл или удалить созданный obj-файл скриптом перед сборкой, я бы предпочел решение внутри VS, если это возможно.

9

Решение

Вы могли бы, вероятно, добавить 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.
12

Другие решения

Вы можете добавить следующий шаг предварительной сборки, если вы просто коснетесь отметки даты в файле. +,, это специальный флаг copy команда, указывающая обновить временную метку файла:

copy file.cpp +,,
1

Как предложенный Adrian McCarthy, вы можете просто удалять объектный файл каждый раз, когда создаете проект.

Поэтому создайте событие перед сборкой, вызывая del команда. В соответствии с Microsoft, Вы можете использовать $(IntDir) макрос для ссылки на каталог, в котором хранится объектный файл (вы не должны использовать $(TargetDir) макро).

У меня были проблемы с кодом возврата команды (ошибка MSB3073), поэтому я изменил команду, чтобы всегда выход с 0,

del $(IntDir)datefile.obj & exit 0

Создайте это событие сборки в конфигурации проекта, под Свойства конфигурации / События сборки.

1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector