Comment générer CMakeLists.txt?

J’ai besoin de conseils / conseils sur la façon de générer automatiquement des fichiers CMakeLists.txt pour CMake. Est-ce que quelqu’un connaît des générateurs existants? J’ai vérifié ceux listés dans le Wake CMake mais malheureusement ils ne me conviennent pas.

J’ai déjà un script Python de base qui traverse la structure des répertoires de mon projet et génère les fichiers requirejs, mais c’est vraiment “bête” en ce moment. Je souhaiterais le compléter pour prendre en compte, par exemple, les différentes plates-formes pour lesquelles je construis, le compilateur \ cross-comstackr que j’utilise ou différentes versions des dépendances des bibliothèques que je pourrais avoir. Je n’ai pas beaucoup d’expérience avec CMake et un exemple que je pourrais fonder sur mon travail ou un générateur déjà en fonctionnement pourrait être d’une grande aide.

Je suis d’avis que vous n’avez pas besoin d’utiliser un script automatisé pour générer CMakeLists.Txt, car il est très simple d’en écrire un, après avoir compris la procédure de base. Oui, je suis d’accord que comprendre la procédure pour en écrire un tel que donné dans CMake Wiki est également difficile car il est trop détaillé.

Un exemple très simple montrant comment écrire CMakeLists.txt est montré ici , ce qui, je pense, sera utile à tout le monde, même à quelqu’un qui va écrire CMakeLists.txt pour la première fois.

Eh bien, je n’ai pas beaucoup d’expérience dans Cmake non plus, mais pour effectuer une plate-forme croisée, beaucoup de fichiers doivent être écrits et modifiés, y compris le fichier CMakeLists.txt, je vous suggère d’utiliser ce nouvel outil appelé ProjectGenerator Tool. plutôt cool, il fait tout le travail supplémentaire nécessaire et permet de générer facilement de tels fichiers pour des sources tierces avec peu d’effort. Il suffit de lire attentivement le fichier README avant de l’utiliser.

Lien: http://www.ogre3d.org/forums/viewtopic.php?f=1&t=54842

Je pense que vous le faites à l’envers.

Lorsque vous utilisez CMake, vous êtes censé écrire le fichier CMakeLists.txt vous-même. En règle générale, vous n’avez pas besoin de gérer différents compilateurs, car CMake les connaît. Cependant, si vous le devez, vous pouvez append du code dans CMakeFiles pour faire différentes choses selon l’outil que vous utilisez.

CLion est un environnement de développement intégré entièrement basé sur un fichier de projet CMake.

Il est capable de générer lui-même le fichier CMakeLists.txt lors de l’utilisation du projet d’importation à partir de la source

Cependant, il est fort probable que vous deviez modifier ce fichier manuellement au fur et à mesure que votre projet se développe et pour append une dépendance externe.

Je ne suis pas sûr que l’affiche originale pose problème, mais comme je vois beaucoup de réponses «écrivez simplement CMakefile.txt» ci-dessus, laissez-moi vous expliquer brièvement pourquoi la création de fichiers CMake peut avoir un sens:

a) J’ai un autre système de construction Je suis assez content

(et qui couvre la construction en grandes séries de grandes collections de bibliothèques partagées et statiques interconnectées, de programmes, d’extensions de langage de script et d’outils, avec diverses dépendances, quirks et variantes internes et externes)

b) Même si je devais le remplacer, je ne considérerais pas cmake.

J’ai jeté un coup d’oeil à CMakefiles et je ne suis pas content de la syntaxe et pas content de la sémantique.

c) CLion utilise CMakefiles et Cmakefiles uniquement (et semble quelque peu intéressant)

Donc, pour donner une chance à CLion (j’adore PyCharm, alors c’est tentant), mais pour continuer à utiliser mon système de build, j’utiliserais volontiers un outil qui me permettrait d’implémenter make generate_cmake et de disposer tous les fichiers CMake nécessaires à la volée. informations actuelles extraites de mon système de build. Je peux volontiers alimenter l’outil / script avec des informations sur les sources et les en-têtes de mon application, sur les bibliothèques et les programmes qu’il est prévu de construire, quels sont les parameters -I, -L, -D, etc. etc.

Eh bien, bien sûr, je serais beaucoup plus heureux si JetBrains permettait de fournir un protocole direct pour alimenter l’EDI avec les informations dont il a besoin (par exemple, il m’a permis de créer mes propres commandes pour comstackr, exécuter et émettre need – Je suppose qu’ils ont principalement besoin d’incdirs et définit pour implémenter l’parsing du code à la volée, et libpaths pour configurer LD_LIBRARY_PATH pour le débogueur), sans faire référence à cmake. Les fichiers CMake en tant que protocole sont quelque peu compliqués.

Peut-être que cela pourrait être utile:

https://conan.io/

L’auteur a donné quelques discours sur cmake et comment créer des projets modulaires en utilisant cmake dans CPPCon. Pour autant que je sache, cet outil nécessite cmake, donc je suppose que cela le génère lorsque vous intégrez de nouveaux packages ou créez de nouveaux packages. Récemment, j’ai lu quelque chose sur la façon d’écrire une description de plus haut niveau du projet C / C ++ en utilisant un fichier YAML, mais je ne suis pas sûr que cela fasse partie de conan ou non. Je n’ai jamais utilisé, et c’est quelque chose en attente pour moi, alors, s’il vous plaît si vous l’utilisez et répondez à vos besoins, commentez vos opinions à ce sujet et comment cela correspond à votre scénario.