2013-08-01 2 views
0

Я пишу простое приложение C++ с использованием Visual Studio IDE и компилятора VC++.Сделать VC++ перекомпилировать все файлы

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

Моя догадка заключается в том, что VC++ «умный», он сохраняет компиляции, и когда они не подвержены влиянию, он не перекомпилирует его. Но поскольку ошибочный файл влияет на другие файлы, некоторые ошибки компиляции (не все) просто остаются.

Кто-нибудь знает, как отключить такое поведение?

+0

после того, как вы удалили файл, вы сделали «перестроить все»? в противном случае файлы могут задерживаться, как вы правильно указали –

+0

@claptrap Я просто нажимаю «Перестроить», но внизу справа говорится, что он перестраивает все, поэтому я думаю, да. : s –

ответ

0

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

Строка должна находиться под вкладкой build.

0

Можете ли вы показать ошибки?

Если файл содержит фактический функциональный код, то исправить ошибки компиляции? Если файл не содержит функционального кода, то что он делает в вашем проекте.

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

Если вы действительно удалите файл на диске, у вас будут другие типы ошибок.

Во всех случаях просто исправьте ошибки компиляции.

+0

Я бы сделал это, но файл имеет 12 строк и содержит небольшие ошибки 10k +. –

+0

Странная вещь, когда я просто прокомментирую строки, которые компилятор жалуется, компилирует, комментирует их, компилирует, работает отлично. (Когда все ссылки на этот ошибочный файл удаляются, но файл все еще находится в проекте) –

+0

Если файл имеет 12 строк, отредактируйте исходный вопрос с помощью 12 строк и добавьте пару ошибок, которые он генерирует. – Max

0

MSBuild и Visual C++ компилятор для отличное задание правильного двоичного файла при внесении изменений, таких как добавление или удаление файла. Скорее всего, даже без полной перекомпиляции скомпилированный исполняемый файл будет правильным. Если вы видите неожиданное поведение, то, скорее всего, вызвано одной из следующих вещей:

  1. Убедитесь, что Visual Studio настроен для создания проекта перед его запуском. Проверьте следующие параметры под Инструменты → Опции ...→ Проекты и решения → построить и запустить:

    • Перед зданием: Сохранить все изменения
    • На ходу, когда проекты устарели: «Запрос на строительство» или «Всегда строить»
    • На ходу , когда происходит сборки или развертывание ошибка: «Запрос на запуск» или «Всегда запускать»
  2. Если Visual Studio спросит, если вы хотите запустить старую версию программы, вы, возможно, ввели ошибку компиляции путем удаления файл, поэтому скомпилированный двоичный файл, безусловно, будет устаревшим, пока вы его не исправите.

  3. Если ваш проект содержит файл, который прямо или косвенно #include "yourRemovedFile", то удаление файла из проекта может не иметь никакого эффекта.

  4. Список ошибок Visual Studio сообщает о проблемах независимо от компилятора. Возможно, вы видели старые сообщения об ошибках, которые больше не относятся к вашему проекту, но пока не были удалены из пользовательского интерфейса. В этих случаях, когда вы запустите вашей программы, вы все равно получите те же результаты. Вы также можете увидеть, если это ваша проблема, перезапустив Visual Studio и посмотрев, сохраняются ли сообщения об ошибках.

+0

Ни один из этих пунктов не был причиной. –

Смежные вопросы