С Delphi-6 существует две опции: Сборка и Компиляция.
Я знаю, когда я запускаю программу, она компилирует только файлы, которые изменились, и использует DCUs для тех, которые не имеют. Когда я нажимаю сборку, по-видимому, она восстанавливает DCUs.
То, что я задавался вопросом, когда я делаю программу для выпуска (изменяющий настройки сборки, условные переменные, и т.д.) я могу просто скомпилировать, или я должен сделать полную сборку?
Что происходит, если я не делаю полной сборки, есть ли какой-либо consiquence?
При сборке, при компиляции?
Компилятор автоматически перекомпилирует модули только при изменении отметки даты и времени исходных файлов .pas (1,2).
При других изменениях состояния в проекте (директивы, отладка или другие настройки компилятора и т. Д.) Компилятор не будет автоматически перекомпилировать. Вот когда вам нужно форсировать сборку.
Вам также необходимо принудительно выполнить перестройку при изменении .inc или других включенных ($ I) файлов (3), поскольку их отметка даты и времени не проверяется.
Итак, если изменяется что-либо, кроме файлов .pas модуля, вам необходимо выполнить сборку.
Бывают странные случаи в строительстве. Чаще всего возникает ошибка «не удается найти блок xxx» , хотя кажется, что она есть
(1), и если Delphi похож на FPC, .dcu содержат CRC раздела интерфейса всех ЦУ это зависит. Это можно использовать, чтобы проверить, есть ли дополнительная необходимость в перекомпиляции. Например.из-за манипуляций с файловой системой (перемещение dcu)
(2) для экспертов, обратите внимание на {$ implicitbuild xx}
(3) в отличие от Delphi, FPC действительно перестраивает при изменении .inc. Проект FPC широко использует файлы .inc внутри, это изменение уже относится к тому времени, когда появилась поддержка Delphi. В результате пакеты, которые копируют файл "define" inc в любой каталог, не будут компилироваться с FPC, потому что они обычно имеют немного другой размер и CRC. Indy (10) - хороший тому пример.
@Daisetsu, вот разница между сборкой и компиляцией.
Сборка компилирует все используемые модули в проекте, когда доступен исходный код.
Компиляция компилирует только измененные используемые единицы.
По моему личному опыту, когда вы вносите изменения в конфигурацию компилятора, вы должны выполнить сборку приложения, чтобы изменения отражались во всех модулях проекта.
При подготовке выпуска вы должны обязательно выполнить полную сборку.
Нет никаких оправданий, ведь компилятор Delphi достаточно быстр.
Для вашего здравомыслия я настоятельно рекомендую вам всегда делать полную сборку готовой к выпуску версии.
Я регулярно делаю полные сборки даже для невыпускаемых версий.
Всегда следует выполнять сборку при изменении настроек.
Ранее скомпилированные файлы DCU могли быть скомпилированы с другими настройками, такими как определения компилятора. Это может привести к тому, что два модуля в одном проекте будут скомпилированы с разными настройками.