J'ai lu la documentation.
Ça dit:
A CMake Generator is responsible for writing the input files for a native build system.
Qu'est-ce que cela veut dire exactement?
Si j'ai un ensemble de fichiers C++ dans mon projet, s'agit-il des fichiers d'entrée?
Si j'utilise Linux, quel est mon système de construction natif par défaut? Make
?
Pourquoi les fichiers d'entrée doivent-ils être written
par le générateur s'ils existent déjà?
Qu'est-ce qu'un générateur?
Pour comprendre ce qu'est un générateur, nous devons d'abord examiner ce qu'est un système de construction. CMake ne compile ni ne lie aucun fichier source. Il utilisait un générateur to créer des fichiers de configuration pour un système de construction . Le système de construction utilise ces fichiers pour compiler et lier les fichiers de code source.
Alors, quel est un système de construction?
Un système de construction est un terme général qui regroupe un ensemble d'outils utilisés pour compiler et lier de manière générale le code source, mais il peut également inclure des outils auxiliaires utilisés lors d'un processus de construction.
Par exemple, dans un système de construction à plusieurs étages, un exécutable peut être construit pour être utilisé dans le processus de construction d'une autre génération.
En fonction de la chaîne d'outils utilisée sur un système, CMake générera plusieurs fichiers et dossiers pour permettre la création des fichiers source référencés dans les fichiers CMakeLists.txt et prenant en charge .cmake.
Parfois, plusieurs systèmes de construction peuvent être installés sur un ordinateur. Par exemple, pour Windows, vous pouvez avoir un système de construction Visual Studio et MinGW. CMake vous permet de spécifier pour quels systèmes de construction générer des fichiers de configuration.
CMake inclut un certain nombre de générateurs Command-Line
, IDE
et Extra
.
Générateurs d'outils de construction en ligne de commande
Ces générateurs sont destinés aux outils de construction en ligne de commande, tels que Make et Ninja. La chaîne d'outils choisie doit être configurée avant de générer le système de construction avec CMake.
Les éléments suivants sont pris en charge (**):
IDE Générateurs d'outils de génération
Ces générateurs sont destinés à des environnements de développement intégrés qui incluent leur propre compilateur. Des exemples sont Visual Studio et Xcode, qui incluent un compilateur de manière native.
Les éléments suivants sont pris en charge (**):
Générateurs supplémentaires
Ces générateurs créent une configuration pour travailler avec un autre outil IDE et doivent être inclus avec un générateur IDE ou une ligne de commande.
Les éléments suivants sont pris en charge (**):
Si j'ai un ensemble de fichiers C++ dans mon projet, s'agit-il des fichiers d'entrée?
Oui, ils sont certains des fichiers d'entrée. Pour un système de compilation, vous avez également un MakeFile. Pour Visual Studio, vous avez un fichier de solution (.sln). Avec les deux systèmes, CMake sait comment créer des fichiers supplémentaires à partir d'un fichier CMakeLists.txt approprié.
Si j'utilise Linux, quel est mon système de construction natif par défaut? Faire?
Généralement, oui, mais d’autres systèmes de compilation pourraient être configurés comme Ninja.
Pourquoi les fichiers d'entrée doivent-ils être écrits par le générateur s'ils existent déjà?
Certains fichiers sources existent peut-être déjà, mais CMake a la capacité de générer des fichiers d’en-tête et sources. Comme mentionné ci-dessus, il faut également générer des fichiers de configuration qui dépendent des fichiers source fournis dans le fichier CMakeLists.txt.
** Selon la documentation pour CMake version 3.9
Un générateur CMake est responsable de l'écriture des fichiers d'entrée pour un système de construction natif .
cela signifie que CMake prépare les scripts de génération pour un système de génération natif lorsqu'aucun générateur n'est spécifié. Sous Linux, le système de construction par défaut est Make
et son fichier d'entrée est makefiles
. Ils sont ensuite interprétés et une construction est exécutée en conséquence. Avant la première exécution de CMake, les scripts de compilation n'existent pas.
Les fichiers source C++ (ou tout autre fichier source) ne sont pas des fichiers d'entrée dans un système de construction. Les scripts de système de construction spécifient comment gérer le fichier source afin de produire des exécutables binaires.
Autant que je sache, le système de construction natif standard sous Unix est "GNU make (gmake)", appelé "make". Les gars de Google ont également publié un autre outil appelé "Ninja".