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?