Borland C++ Builder 6 всегда компилирует все файлы

Почему C++ Builder 6 всегда компилирует все файлы?

Я вношу некоторые изменения в один файл, но BCB 6 компилирует все файлы при запуске приложения. Любая идея? Я использую Windows XP SP2.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
4 806
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

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

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

Обновлено: проверьте, что параметр VS имеет флаг для постоянной повторной компиляции, это может быть верно и для BCB, если он установлен, затем отключите его. Другая возможность состоит в том, что предварительно скомпилированные заголовки неправильно настроены для создания в каждом исходном файле.

Я не знаком с BCB 6, чтобы дать более точный ответ.

Ответ принят как подходящий

попробуйте этот плагин для компилятора BCB: Плагин Bcc32Pch IDE

Убедитесь, что вы используете команду «make», а не команду «build», если это не требуется.

При создании проекта с помощью инструментов Borland всегда возникала эта проблема - он не обязательно замечает, какие из них изменились, и начинает все компилировать.

Посмотрите на параметры предварительно скомпилированных заголовков, которые могут помочь ускорить процесс.

Когда Borland / CodeGear, начиная с C++ Builder 2007, перешла на систему MSBuild, компиляции стали намного быстрее и эффективнее.

Вы сделали все или многие свои файлы зависимыми от определенного модуля?

Любые файлы, зависящие от конкретного модуля, будут перестраиваться каждый раз при изменении структуры классов модуля (содержащейся в файле .h). Если, например, у вас есть модуль данных, к которому обращаются многие другие модули, вы будете видеть перестроение всех зависимых модулей при каждом изменении структуры класса модуля данных.

В Borland есть прагма, которая контролирует, сколько строк кода перекомпилируется.

В последние годы мне удалось (в каком-то проекте), что компилируются только изменения моего исходного кода. Не знаю, будет ли это работать в новых версиях Borland

Borland 6 имеет прагму "hdrstop". это активно только в том случае, если для параметра проекта «Заголовки предварительной компиляции» НЕ установлено значение «Нет».

лет назад у меня был очень медленный компьютер, и я увеличил время компиляции с часов до минут с помощью следующего трюка

все cpps стали этой первой строкой

#include "all.h"
#pragma hdrstop

по умолчанию было включено "vcl.h"

"all.h" будет включать весь заголовок, который нужен во всех! единицы. каждый модуль будет пропускать все источники, которые зависят от заголовка перед pragma hdrstop.

Пример:

Unit1.h

 #include <string>

Unit1.cpp

   #include "all.h"
   #pragma hdrstop

   #include "Unit1.h"

Unit2.h

 #include <vcl>

Unit2.cpp

   #include "all.h"
   #pragma hdrstop

   #include "Unit2.h"

all.h

   #include <string>
   #include <vcl>

Импорт

  1. не используйте all.h в заголовочных файлах
  2. вы можете добавить все включения, которые используются в заголовке проекта, например,
  3. Все исходники, зависящие от "предварительно скомпилированных заголовков", не будут компилироваться снова!
  4. генерация предварительно скомпилированных заголовков будет медленной! Так что добавляйте только заголовки в all.h, которые не будут часто меняться. Как системные заголовки или ваши заголовки, которые уже готовы.
  5. компиляция может быть неудачной. иногда порядок включения приводит к «тупиковой ситуации» при компиляции. если это произойдет, отключите "предварительно скомпилированные заголовки". Большинство проблем будет решено, если вы напишете свой C++ как в java: каждый класс станет его собственными файлами (cpp и h).
  6. Имя файла в опции проекта «Предварительно скомпилированные заголовки» показывает базовое имя реальных предварительно скомпилированных файлов. модуль может совместно использовать предварительно скомпилированный файл с другим модулем, если он имеет (точно) такие же вставки перед "pragma hdrstop". Наилучшая производительность достигается, если у вас есть только один файл с числовым постфиксом. Пример для нескольких предварительно скомпилированных заголовков:

Unit1.h

 #include <string>

Unit1.cpp

   #include "all.h"
   #pragma hdrstop

   #include "Unit1.h"

Unit2.h

 #include <vcl>

Unit2.cpp

   #include <vcl> //!!!!!!!!!!!!!!!!!!! produce a second version of an precompiled file
   #pragma hdrstop

   #include "Unit2.h"

all.h

  #include <string>
  #include <vcl>

Другие вопросы по теме