Domanda

Perché C++ Builder 6 compila sempre tutti i file?

Apporto alcune modifiche su un file ma BCB 6 compila tutti i file quando avvio l'app.Qualche idea?Utilizzo Windows XP SP2.

È stato utile?

Soluzione

prova questo plugin per il compilatore BCB:Plug-in IDE Bcc32Pch

Altri suggerimenti

I file sorgente e gli oggetti binari si trovano sulla stessa macchina?In caso contrario, sembra che tu abbia un problema di sincronizzazione dell'ora di rete.

Se è molto probabile che si tratti di un problema con il file di intestazione, i file di intestazione del compilatore hanno una data modificata nel futuro oppure l'applicazione dipende da alcuni file di intestazione che cambiano durante la compilazione, ad esempio da un'importazione COM.

MODIFICARE:Controlla che l'impostazione VS abbia un flag per ricompilare sempre, questo potrebbe essere vero anche per BCB, se impostato, deselezionalo.Un'altra possibilità è che le intestazioni precompilate siano configurate in modo errato per essere generate su ogni file sorgente.

Non ho familiarità con BCB 6 per dare una risposta più precisa.

Hai reso tutti o molti dei tuoi file dipendenti da un particolare modulo?

Tutti i file che dipendono da un particolare modulo verranno ricostruiti ogni volta che la struttura della classe del modulo (contenuta nel file .h) viene modificata.Se, ad esempio, hai un modulo dati a cui accedono molti altri moduli, vedrai una ricostruzione di tutti i moduli dipendenti ogni volta che la struttura delle classi del modulo dati viene modificata.

C'è un pragma in Borland, che controlla quante righe di codice vengono ricompilate.

Negli ultimi anni sono riuscito (in alcuni progetti) a compilare solo le modifiche della mia fonte.Non so se funzionerà nelle versioni più recenti di Borland

Borland 6 ha un pragma "hdrstop".questo è attivo solo se l'opzione del progetto "Pre-compila intestazioni" NON è "nessuno"

anni fa avevo un computer molto lento e ho accelerato il tempo di compilazione da ore a minuti con il seguente trucco

tutti i cpp sono diventati questa prima linea

#include "all.h"
#pragma hdrstop

l'impostazione predefinita era un'inclusione di "vcl.h"

"all.h" includerà tutte le intestazioni, che sono necessarie in tutto!unità.ogni unità salterà tutte le fonti, che dipendono dall'intestazione Prima pragma hdrstop.

Esempio:

Unità1.h

 #include <string>

Unità1.cpp

   #include "all.h"
   #pragma hdrstop

   #include "Unit1.h"

Unità2.h

 #include <vcl>

Unità2.cpp

   #include "all.h"
   #pragma hdrstop

   #include "Unit2.h"

tutto.h

   #include <string>
   #include <vcl>

Importazione

  1. non utilizzare all.h nei file header
  2. puoi aggiungere tutti gli include, che vengono utilizzati nell'intestazione del progetto, come,
  3. Tutti i sorgenti che dipendono dagli "header precompilati" non verranno compilati nuovamente!
  4. la generazione di intestazioni precompilate sarà lenta!Quindi aggiungi solo le intestazioni in all.h, che non verranno modificate spesso.Come le intestazioni di sistema o le intestazioni che sono già finite.
  5. la compilazione può fallire.a volte l'ordine degli include produce uno "stallo" per la compilazione.se ciò accade, disattivare le "intestazioni precompilate".La maggior parte dei problemi verranno risolti se scrivi il tuo C++ come in Java:ogni classe diventerà i suoi file (cpp e h).
  6. Il nome file nell'opzione del progetto "Intestazioni precompilate" mostra il nome base dei file precompilati reali.un'unità può condividere un file precompilato con un'altra unità, se ha (esattamente) lo stesso contenuto prima di "pragma hdrstop".Si ottengono le prestazioni migliori se si dispone di un solo file con un suffisso numerico.Esempio per più di un'intestazione precompilata:

Unità1.h

 #include <string>

Unità1.cpp

   #include "all.h"
   #pragma hdrstop

   #include "Unit1.h"

Unità2.h

 #include <vcl>

Unità2.cpp

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

   #include "Unit2.h"

tutto.h

  #include <string>
  #include <vcl>

Assicurati di utilizzare il comando "make" e non il comando "build", a meno che non sia richiesto.

Realizzare un progetto con gli strumenti Borland è sempre sembrato avere questo problema: non necessariamente si nota quali sono cambiati e inizia a compilare tutto.

Guarda le opzioni delle intestazioni precompilate, che possono aiutare a velocizzare le cose.

Quando Borland/CodeGear, a partire da C++Builder 2007, è passato al sistema MSBuild, le compilazioni sono diventate molto più veloci e più efficienti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top