Bonjour,
Je viens de passer 2 semaines à prendre en main cmake. Après pas mal d'efforts, je suis capable de générer deux makefiles : un pour mon simulateur, un pour mon exécutable pour MCU. Tout est scriptable et c'est impeccable pour atteindre mon objectif d'automatiser les builds avec Jenkins. C'est cool.
Je réfléchis maintenant à comment cela va être utiliser au jour le jour par les développeurs et je viens de me prendre un mur : c'est le bazar pour ajouter un nouveau fichier cpp au projet. C'est pas cool du tout.
Comme je l'ai expliqué dans une discussion précédente, je génère des sources à partir de ressources lors de l'appel à cmake. Enfin, j'utilise des file(GLOB[_RECURSE] ...) pour lister mes fichiers sources (celles générées et les autres). Comme je fais du globbing pour récupérer mes fichiers sources, je suis obligé de ré-exécuter cmake à chaque fois que je créé un nouveau fichier cpp. Comme je ré-éxecute cmake, je re-génère mes sources à partir des ressources. Comme ces sources contiennent des hpp inclus dans d'autres fichiers, je me retrouve à recompiler énormément de fichiers à chaque fois je créé un nouveau fichier cpp, en plus de devoir rappeler cmake à la main.
J'ai lu plusieurs discussions stackoverflow disant qu'il ne faudrait pas faire de globbing et lister manuellement les sources. Ainsi, quand on créé un fichier cpp, on doit donc le rajouter dans le CMakeLists.txt. Au-delà des emmerdes pour lister manuellement mes fichiers actuels, je trouve ça bien relou de devoir éditer CMakeLists.txt à chaque que je vais créer un fichier cpp ou hpp. Cela va ré-évaluer le build system, je pense qu'en plus ça va re-générer mes sources et donc je tombe dans le même problème qu'au-dessus... Enfin, quand le projet fera des centaines de fichiers, j'imagine même pas le gueule du fichier CMakeLists.txt
D'un seul coup, je suis bien moins convaincu par cmake...
Comment listez-vous vos sources ?
Merci d'avance pour vos retours d'expérience![]()
Partager