Question

Pourquoi C ++ Builder 6 compile-t-il toujours tous les fichiers?

Je modifie un fichier mais BCB 6 compile tous les fichiers lorsque je lance l’application. Une idée? J'utilise Windows XP SP2.

Était-ce utile?

La solution

essayez ce plugin pour le compilateur BCB: plug-in Bcc32Pch IDE

Autres conseils

Êtes-vous des fichiers source et des objets binaires situés sur le même ordinateur? Sinon, vous semblez avoir un problème de synchronisation de l'heure sur le réseau.

S'il s'agit le plus vraisemblablement d'un problème de fichier d'en-tête, les fichiers inclus du compilateur ont une date de modification ultérieure ou votre application dépend de certains fichiers d'en-tête qui changent pendant la compilation, par exemple à partir d'une importation COM.

EDIT: Vérifiez que le paramètre VS a un drapeau pour toujours le recompiler, cela pourrait être vrai pour BCB aussi, s'il est défini, désélectionnez-le. Une autre possibilité est que les en-têtes pré-compilés ne soient pas configurés pour être générés sur chaque fichier source.

Je ne connais pas BCB 6 pour donner une réponse plus précise.

Avez-vous rendu tous ou plusieurs de vos fichiers dépendants d'un module particulier?

Tous les fichiers qui dépendent d’un module particulier seront reconstruits chaque fois que la structure de classe du module (contenue dans le fichier .h) sera modifiée. Si, par exemple, de nombreux modules accèdent à un module de données, vous verrez une reconstruction de tous les modules dépendants à chaque modification de la structure de classe du module de données.

Il existe un pragma à Borland, qui contrôle le nombre de lignes de code recompilées.

Ces dernières années, j’ai réussi (dans certains projets) à ne compiler que les modifications de ma source. Je ne sais pas si cela fonctionnera dans les nouvelles versions de Borland

Borland 6 a un pragma & "; hdrstop &"; cette option n'est active que si l'option de projet & "En-têtes de pré-compilation &"; n'est PAS " aucun "

Il y a quelques années, j'ai un ordinateur très lent et j'accélère le temps de compilation d'heures en minutes avec le truc suivant

tous les cpp sont devenus cette première ligne

#include "all.h"
#pragma hdrstop

par défaut, l'inclusion de & "; vcl.h &";

" all.h " volonté comprend tout en-tête, ce qui est nécessaire dans tous! unités. chaque unité ignorera toutes les sources, qui dépendent de l'en-tête avant pragma hdrstop.

Exemple:

Unité1.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>

Importation

  1. n'utilisez pas all.h dans les fichiers d'en-tête
  2. vous pouvez ajouter tous les inclus, qui sont utilisés dans l'en-tête du projet, comme,
  3. Toutes les sources qui dépendent des " en-têtes pré-compilés & "; ne sera pas compilé à nouveau!
  4. génération d’en-têtes précompilés sera lente! Donc, ajoutez seulement les en-têtes dans all.h, qui ne seront pas changés souvent. Comme les en-têtes de système ou les en-têtes déjà terminés.
  5. la compilation peut échouer. parfois, l'ordre des inclusions produit un & "; impasse &"; pour la comilation. si cela se produit, désactivez & "; les en-têtes pré-compilés &"; La plupart des problèmes seront résolus, si vous écrivez votre c ++ comme en java: chaque classe deviendra ses propres fichiers (cpp et h).
  6. Nom de fichier dans l'option de projet & "En-têtes précompilés &"; affiche le nom de base des fichiers précompilés réels. une unité peut partager un fichier précompilé avec une autre unité, si elle possède exactement la même chose avant & "; pragma hdrstop &"; Les meilleures performances sont atteintes si vous n'avez qu'un seul fichier avec un suffixe numérique. Exemple pour plusieurs en-têtes précompilés:

Unité1.h

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

   #include "Unit2.h"

Unit1.cpp

  #include <string>
  #include <vcl>

Unit2.h

<*>

Unit2.cpp

<*>

all.h

<*>

Assurez-vous d’utiliser le " make " commande et non le " build " commande, sauf si cela est nécessaire.

Créer un projet avec les outils Borland a toujours semblé poser ce problème: il ne remarquait pas nécessairement ceux qui avaient changé et commençait à tout compiler.

Examinez les options des en-têtes précompilés, qui peuvent aider à accélérer les choses.

Lorsque Borland / CodeGear, à partir de C ++ Builder 2007, est passé au système MSBuild, les compilations sont beaucoup plus rapides et plus efficaces.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top