2013-10-25 3 views
3

Я строю DLL в C++ VS2010.VS 2010 здание необоснованно

Я изменил значение имени пользователя DEBUG TargetName, добавив «d», так что определение «TargetName» теперь «$ (ProjectName) d».

Все строит просто отлично - все имена файлов DEBUG имеют постфиксное «d» - это так отлаживает & файлы релизов могут жить в одном каталоге (этот проект является крошечной частью ОГРОМНОГО набора проектов).

Однако, когда я нажимаю F7 с целью DEBUG, проект всегда строится. Например, скажем, мой проект называется MyProj. В RELEASE я генерирую «MyProj.dll» и все другие файлы (MyProj.lib/.exp/.pdb/...) - в DEBUG его «MyProjd.dll» и т. Д. Все эти файлы выглядят хорошо в их соответствующих каталогов, но VS всегда строит в DEBUG на F7. В RELEASE VS правильно определяет, что проект является актуальным и ничего не делает.

Поэтому я включил трассировку отладки в VS с помощью <system.diagnostics> в devenv.exe.config, чтобы установить CPS = 4 и перезапустить VS. Использование (sysinternals) DebugView Я вижу, что восстановление DEBUG запускается, потому что VS проверяет «MyProj.lib» & «MyProj.exp», а не «MyProjd.lib» 10 «MyProjd.exp», то есть его проверку на неправильные файлы (которые не существуют), поэтому сборка всегда начинается.

Это известная проблема или есть какие-то настройки, чтобы обойти это? Настройка/IMPLIB не помогает вообще - это, кажется, проблема в стороне «make» VS - правильные файлы всегда создаются (если это необязательно!), Поэтому это раздражение, а не серьезная проблема ...

Благодаря

Ник

+1

Я тоже видел это поведение. Я помню, что мне пришлось делать «чистый», закрывать VS, удалять предварительно скомпилированные заголовки и выходные папки, а затем перестраивать все. – mark

+0

Интересно - я очистил проект, и проблема ушла. Очень странно. FWIW, я вообще не использую PCH. Все еще думайте, что это (крошечный бит раздражающий) баг в проверке зависимостей VS ... – Nicko

+0

Мое подозрение в том, что когда вы делаете чистую, VS очищает свой список зависимостей. Поскольку я не делал чистого с момента добавления «d» в TargetName, VS неправильно искал старые имена (но только для файлов .lib и .exp), а не смотрел на замещение $ (TargetName) макрос. Выполнение «чистого» сброса зависимостей, так что теперь все хорошо. Я все еще думаю, что это ошибка ... – Nicko

ответ

0

Я видел такое поведение до того, как хорошо. Не уверен, что является необходимым шагом, но я решил по:

  • сборки -> «чистое решение»
  • выход Visual Studio
  • удалить скомпилированные заголовки и выходные папки (думаю, что я удалил. sdf)
  • перестроить все