« Programmation C++/Compilation » : différence entre les versions
Contenu supprimé Contenu ajouté
→Multi-plateformes : ajout de Qt Creator |
m typo (plus trop sûre sur le coup des virgules en deuxième niveau de liste..), liens vers wp corrigés |
||
Ligne 11 :
=== Phases de la compilation ===
La compilation passe par différentes phases, produisant ou non des fichiers intermédiaires :
*
*
*
Les compilateurs sont capables de générer des bibliothèques statiques, qui sont en quelques sortes le rassemblement d'un ensemble de fichiers objet au sein d'un même fichier. Dans ce cas, la phase d'édition de liens n'a pas eu lieu.
Ligne 23 :
=== Les fichiers d'en-tête ===
Les fichiers "entêtes" ("headers" en anglais), traditionnellement d'extension <tt>.h</tt> ou <tt>.hpp</tt> (mais la plupart des entêtes systèmes du C++ standard n'ont plus d'extension du tout), contiennent généralement les prototypes de différentes fonctions, structures et classes. Ces prototypes proviennent :
* des bibliothèques standards du C++ : tout compilateur C++ doit fournir ces fichiers ainsi que les fichiers objets contenant l'implémentation des bibliothèques standards (souvent liées par défaut) ;
▲<li>de bibliothèques non standards (gratuites ou payantes) que le programmeur s'est procuré : citons par exemple la bibliothèque permettant d'accéder à une base de données mySQL. Lorsqu'une bibliothèque non standard est utilisée et que celle-ci englobe de nombreuses fonctionnalités (interface graphiques, accès à une base de données, surcouche système, communications réseaux, etc.), on parle parfois de [[w:Framework|framework]]. Citons par exemple [[w:Qt|Qt]] et [[w:WxWidgets|WxWidgets]] dans cette catégorie. Un framework apparait parfois comme une véritable surcouche du système d'exploitation.</li>
=== Les fichiers .cpp ===
Ligne 36 ⟶ 34 :
== L'édition de liens (linking) ==
L'édition de liens est la phase finale de la compilation qui va rassembler tous les fichiers objets afin de former un fichier exécutable. Les fichiers objets proviennent :
* de la compilation de fichiers .cpp ;
* de la bibliothèque standard (ceux-ci sont souvent liés automatiquement) ;
* de bibliothèques ou framework extérieurs. Il faut dans ce cas explicitement dire à l'éditeur de liens quels sont les fichiers qu'il doit lier.
Ligne 43 ⟶ 41 :
=== Les makefiles ===
Afin de rendre possible le développement d'applications, les fichiers sources sont organisés sous forme de '''projet'''. Le C++ ayant été conçu sur les bases du C, il s'en est suivi une gestion assez équivalente des projets. Avant l'avènement des environnements intégrés tels qu'on les connaît aujourd'hui, bon nombre de projets étaient construits sous forme de "makefile"s pris en charge par un outil spécifique [[w:make|make]]. De nos jours, cette technique est encore fortement utilisée dans les environnements UNIX et Linux. Il existe des alternatives plus modernes à ''make'' tels que [[w:CMake|CMake]], [[w:automake|automake]], [[w:SCons|SCons]], [[w:boost|Boost.Build]] (bjam)
=== Les environnements de développement intégrés ===
Les environnements de développement intégrés ([[w:Environnement_de_développement_intégré|EDI]] en français et IDE en anglais) sont des outils complets permettant de développer dans un certain langage de programmation. Ils contiennent en général :
* un compilateur
* un éditeur avec mise en évidence de la syntaxe (syntax highlighting) ;
* des outils facilitant la gestion d'un projet :
** outil pour ajouter/supprimer/déplacer des sources,
** outil pour paramétrer la compilation et l'édition de liens,
** outil pour créer des modes de compilation (typiquement debug/release) et tous les paramètres y afférent
* des bibliothèques non standard censées aider le programmeur. Parfois, il s'agit d'un véritable framework
* des outils pour permettre le lancement de l'application
* des outils pour déboguer l'application
* des outils pour créer des interfaces graphiques
*
== Quelque exemples ==
Ligne 69 ⟶ 67 :
* Visual C++ de Microsoft (basé sur Visual studio).
* Visual C++ Express (disponible gratuitement et complètement utilisable).
* [[w:C++
* [[w:Dev-
=== Sous Linux ===
|