-
Limitation de CMake
[Suite à cette discussion : Compilation multi plateforme]
Dites (peut être que ça nécessite un thread pour en discuter) mais vous ne trouvez pas que le fait que CMake ne permette pas d'avoir des adresses relatives dans les fichiers générés soit un gros problème?
-
Salut,
Peux-tu préciser ce que tu entends par adresse relative et les problèmes que ça induit ?
-
Pour donner un exemple concret, je bosse sur des projets persos que j'organise de manière à ce que d'autres puissent y participer même temporairement.
Du coup, j'ai un SVN avec toutes les sources du projet, presque tout ce qu'il faut pour juste récupérer le projet, boost, python et lancer une compilation complete du projet.
Je ne veux pas forcer l'utilisateur a avoir le projet a un endroit précis. Or CMake (que je n'utilise pas actuellement mais qui m'interesse) ne génère que des fichiers .sln et .vcproj (fichiers Visual Studio -- mais c'est valide pour les autres fichiers visiblement) avec des adresses de fichiers "absolues", c'est à dire completes. Donc en gros si mon projet était généré sous CMake, il faudrait:
- que le développeur récupere les source puis génère les fichiers là ou il veut avoir son projet : cela implique qu'il sera obligé de refaire une compilation complète si il veut déplacer le dossier ou se trouve l'ensemble du projet sur sa machine?
- que toutes les bibliothèques utilisées ont interet a être sous CMake : j'ai plusieurs bibliothèques qui n'utilisent pas CMake et je ne veux pas prendre le temps de refaire les fichiers CMake pour ces projets là, surtout que pour ceraines bibliothèque je n'ai pas fixé de version donc des changements peuvent arriver dans les fichiers de projets et j'aurais alors a les reporter a chaque fois dans les fichier CMake, n'est-ce pas?
Actuellement dans ces projets j'ai toutes les adresses en relatives pour permettre de déplacer les sources du projet simplement en copiant-collant.
Je suis conscient que ce n'est pas une contrainte dans un projet d'une entreprise puisqu'on peut partir d'une organisation similaire et préfixée pour toutes les machine de dev, mais je suis plutot dans un cas "volatile" ou je dois limiter au maximum tout freins à la participation d'autres volontaires sur le projet.
-
J'utilise beaucoup CMake. Je ne suis pas sûr que ton problème soit insurmontable.
Si je te comprend correctement, tu possèdes un projet fait de différents modules. Tu souhaites ponctuellement introduire un developpeur sur un module en particulier. Et ton soucis est de fournir un "build" de toutes les autres parties du projet hormis la partie impactée par ce codeur.
Correct ?
-
Non, j'aimerai que le dit codeur puisse déplacer son projet sans avoir a tout recompiler, et aussi ne pas avoir a maintenir moi même les changements de bibliotheques que j'utilise (et qui ne sont pas encore stable) qui n'utilisent pas CMake.
-
A brûle pourpoint, pour chaque module "déplaçable" tu peux définir une variable qui référence la racine de ce module dans ton CMakeFile. Si tu déplaces le projet, il faudra renseigner correctement cette variable avec le chemin mis à jour.