Le plus long temps de compilation
Hits – également connu sous le nom de The Hits Album – est une série d’albums de compilation de longue durée contenant de la musique contemporaine. Elle a été diffusée au Royaume-Uni et dans certaines régions d’Europe pendant plus de vingt ans, de 1984 à 2006. Elle a été compilée sous la forme d’une entreprise conjointe, entre les branches de compilation des groupes Sony Music, RCA/BMG et Warner Music, afin de rivaliser avec la série Now That’s What I Call Music, lancée un an plus tôt en 1983, compilée par les sociétés rivales EMI et Virgin. Au départ, la marque Hits était sans doute aussi populaire que sa principale rivale et les huit premiers volumes ont tous obtenu au moins une récompense de platine du BPI, plusieurs des tout premiers albums étant multiplatine.
En 1989, cinq ans après le début de la série Hits, une baisse des ventes a entraîné plusieurs changements de marque, ce qui signifie que, pendant un certain temps, la série a perdu de son dynamisme avec le modèle de sortie et la numérotation de chaque volume.
La série a été brièvement abandonnée, et en 1992, aucune compilation de Hits n’a été publiée. L’année suivante, BMG s’est associé à la société spécialisée dans les compilations Telstar Records pour une brève série de cinq volumes des compilations Hits 93 et Hits 94 sur CD/MC/LP.
Construction distribuée par Cmake
Un compilateur croisé est un compilateur capable de créer du code exécutable pour une plateforme autre que celle sur laquelle le compilateur fonctionne. Par exemple, un compilateur qui s’exécute sur un PC mais qui génère du code exécutable sur un smartphone Android est un compilateur croisé.
Un compilateur croisé est nécessaire pour compiler du code pour plusieurs plates-formes à partir d’un hôte de développement. La compilation directe sur la plate-forme cible peut s’avérer irréalisable, par exemple sur les systèmes embarqués disposant de ressources informatiques limitées.
Les compilateurs croisés se distinguent des compilateurs source à source. Un compilateur croisé sert à générer des logiciels multiplateformes en code machine, tandis qu’un compilateur source-à-source traduit d’un langage de programmation à un autre en code texte. Tous deux sont des outils de programmation.
L’utilisation de machines virtuelles (telles que la JVM de Java) résout certaines des raisons pour lesquelles les compilateurs croisés ont été développés. Le paradigme de la machine virtuelle permet d’utiliser la même sortie de compilateur sur plusieurs systèmes cibles, bien que ce ne soit pas toujours idéal car les machines virtuelles sont souvent plus lentes et le programme compilé ne peut être exécuté que sur des ordinateurs équipés de cette machine virtuelle.
Pourquoi la compilation prend-elle autant de temps ?
La compilation d’un fichier C++ prend beaucoup de temps par rapport à C# et Java. Il faut beaucoup plus de temps pour compiler un fichier C++ que pour exécuter un script Python de taille normale. J’utilise actuellement VC++ mais c’est la même chose avec n’importe quel compilateur. Comment cela se fait-il ?
L’analyse syntaxique et la génération de code sont en fait assez rapides. Le vrai problème est l’ouverture et la fermeture des fichiers. Rappelez-vous, même avec les gardes d’inclusion, le compilateur doit toujours ouvrir le fichier .H, et lire chaque ligne (et ensuite l’ignorer).
Il est certainement possible que la vitesse de compilation n’ait pas été une priorité pour les développeurs de compilateurs C++, mais il y a aussi quelques complications inhérentes à la syntaxe C/C++ qui la rendent plus difficile à traiter. (Je ne suis pas un expert du C, mais Walter Bright l’est, et après avoir construit plusieurs compilateurs C/C++ commerciaux, il a créé le langage D. L’une de ses modifications a été d’imposer l’utilisation de la syntaxe C/C++ dans le langage D. L’une de ses modifications a été d’imposer une grammaire sans contexte pour rendre le langage plus facile à analyser).
Une autre raison est l’utilisation du pré-processeur C pour localiser les déclarations. Même avec les gardes d’en-tête, les .h doivent toujours être analysés encore et encore, à chaque fois qu’ils sont inclus. Certains compilateurs prennent en charge des en-têtes précompilés qui peuvent aider à résoudre ce problème, mais ils ne sont pas toujours utilisés.
Compiler plus rapidement
Lorsque vous créez un nouveau projet dans Visual Studio, un fichier d’en-tête précompilé nommé pch.h est ajouté au projet. (Dans Visual Studio 2017 et les versions antérieures, ce fichier s’appelait stdafx.h.) L’objectif de ce fichier est d’accélérer le processus de compilation. Tout fichier d’en-tête stable, par exemple les en-têtes de la bibliothèque standard tels que <vector>, doit être inclus ici. L’en-tête précompilé n’est compilé que lorsqu’il est modifié, ou tout fichier qu’il inclut. Si vous n’apportez que des modifications au code source de votre projet, la compilation de l’en-tête précompilé sera ignorée.
Les options du compilateur pour les en-têtes précompilés sont /Y. Dans les pages de propriétés du projet, les options sont situées sous Configuration Properties > C/C++ > Precompiled Headers. Vous pouvez choisir de ne pas utiliser les en-têtes précompilés, et vous pouvez spécifier le nom du fichier d’en-tête ainsi que le nom et le chemin du fichier de sortie.
La première compilation (celle qui crée le fichier d’en-tête précompilé) prend un peu plus de temps que les compilations suivantes. Les compilations suivantes peuvent se dérouler plus rapidement en incluant le code précompilé.