J'utilise CMake pour générer mes projets IDE / makefiles, mais j'ai encore besoin d'appeler des "scripts" personnalisés pour manipuler mes fichiers compilés ou même générer du code.
Dans les projets précédents, j'utilisais Python et c'était OK, mais maintenant j'ai de la difficulté à gérer beaucoup de dépendances dans deux très gros projets sur lesquels je travaille, donc je veux minimiser les dépendances partout.
Quelqu'un m'a suggéré d'utiliser C ++ pour écrire mes scripts de build au lieu d'ajouter une dépendance de langage juste pour cela. Les projets eux-mêmes utilisent déjà C ++ donc je peux voir plusieurs avantages:
- pour construire l'ensemble du projet, seuls un compilateur C ++ et CMake seraient nécessaires, rien d'autre (toutes les autres dépendances sont C ou C ++);
- La sécurité de type C ++ (lors de l'utilisation de C ++ moderne) rend tout plus facile à obtenir "correct";
- c'est aussi le langage que je connais le mieux donc je suis plus à l'aise avec lui même si je suis capable d'écrire du bon code Python;
- gain potentiel de vitesse d'exécution (mais je ne pense pas que ce sera vraiment perceptible);
Cependant, je pense qu'il pourrait y avoir quelques inconvénients et je ne suis pas sûr de l'impact réel car je n'ai pas encore essayé:
- pourrait être plus long pour écrire le code (cela dit, je ne suis pas sûr car je suis assez efficace en C ++ pour écrire quelque chose qui fonctionne rapidement, donc peut-être pour ce système ce ne serait pas si long à écrire) (le temps de compilation ne devrait pas t être un problème pour ce cas);
- Je dois supposer que tous les fichiers texte que je vais lire en entrée sont en UTF-8, je ne suis pas sûr que cela puisse être facilement vérifié lors de l'exécution en C ++ et le langage ne le vérifiera pas pour vous;
- les bibliothèques en C ++ sont plus difficiles à gérer que dans les langages de script;
Je manque d'expérience et de clairvoyance, il me manque donc peut-être des avantages et des inconvénients. La question est donc: est-il judicieux d'utiliser C ++ pour cela? avez-vous des expériences à signaler et voyez-vous des avantages et des inconvénients qui pourraient être importants?
la source
Réponses:
Utilisez simplement Python.
Je développe en C ++ et je fais mes scripts de build en Python, et je trouverais pénible de faire des scripts de build en C ++:
Concernant les avantages que vous listez pour C ++:
la source
Je pense que cette question est spécifique à chaque cas. Je dirais qu'il n'y a pas de bonne réponse, que ce soit logique ou non d'utiliser C ++ pour les scripts de construction, la seule façon de le comprendre est de l'essayer dans la pratique.
Personnellement, je verrais Python supérieur à C ++ en raison d'une meilleure expressivité du langage et d'outils de bibliothèque standard plus faciles (opinion personnelle, bien sûr) pour gérer la tâche de manipulation des fichiers binaires et de génération de code. Bien sûr, des bibliothèques sophistiquées développées pour la tâche peuvent être disponibles, mais sinon, je parierais certainement que Python sera la réponse "plus souvent correcte" - dans le cas général.
la source
N'écrivez pas vous-même des scripts, vous dupliquez vos efforts et réinventez les roues.
Utilisez quelque chose comme SCONS ou même Maven 3 qui prend en charge les systèmes de construction C ++ .
Un bon système de construction, quelle que soit la langue, ne devrait pas nécessiter de logique personnalisée sous forme de scripts pour créer un artefact exécutable fonctionnel.
Si vous devez écrire des scripts pour un système de build pour le personnaliser, ce n'est pas un bon système de build. Écrire un plugin pour un système de build est une autre histoire, mais cela devrait être très particulier à un environnement / matériel principalement, et devrait être quelque chose qui est rarement utilisé.
la source
Pour se concentrer sur la question:
La réponse est un simple non .
La réponse actuellement acceptée fait un zoom sur python et répertorie tout un tas de problèmes valables, mais je voudrais ajouter une raison indépendante du langage:
Vous ne voulez vraiment rien écrire dans un langage compilé si vous pouvez l'aider:
De plus, en allant avec l'autre réponse:
Vous ne voulez probablement pas non plus utiliser un langage de script "brut" pour créer vos scripts de construction (je comprends que les subtilités C ++ seraient gérées par CMake).
Ce que vous devriez probablement faire est de choisir l'une des versions . Systèmes . dehors . là . et voyez si on correspond à votre facture. scriptabilité / extensibilité / play-nice-with-CMake / crossplatformness.
la source