Je cherchais des avantages et des inconvénients d'autotools et de cmake. Mais j'aimerais connaître des opinions de personnes ayant utilisé un (ou les deux) de ces outils pour des projets.
J'ai utilisé des autotools très essentiellement il y a un an et je sais que l'un des bons points est qu'il s'appuie sur des scripts Shell, il n'a donc pas besoin d'être installé pour être exécuté et utilise des scripts de shell portables. Mais il semble que c'est trop unix orienté, et il ne serait pas possible d'exécuter le fichier de configuration sous Windows.
Je dois maintenant choisir un outil de système de construction pour n projet open source qui devra être compilé au moins Linux & Windows. Il est écrit en C++ et utilise un gui-front d'interface graphique QT, le reste de celui-ci est "générique".
Merci pour ton aide.
Je ne recommanderais pas AutoTools pour Windows. Utiliser cmake.
Pourquoi? Windows n'a pas de native sh.exe, et l'émulation est lente. Il est également très facile d'obtenir le contrat de configuration. Je ne dis pas que c'est impossible en cmake, mais cmake résoudra sûrement plus loin, alors vous vous inquiétez de moins. La documentation CLAKE peut être un peu difficile à lire, mais une fois que cela est mis en place, vous devriez être bien pour toutes les cuillères à outils jamais supportées par CMAKE. Cmake intègre également les tests, l'emballage, etc.
AutoTools est lent sur Windows, ne fonctionne pas facilement avec MSVC et offre des bizarreries bizarres avec Windows (et autres OSES) difficiles à déboguer et difficiles à réparer. LibTool cuit également les fenêtres, où il refuse souvent de créer une bibliothèque partagée, même si vous pensez que cela devrait et pourrait. Les problèmes de déménagement de la boîte à outils sont également répandus avec libtoure, ce qui peut examiner les mauvais fichiers dans une boîte à outils d'un utilisateur. Cmake est beaucoup plus facile à cet égard. Il assume des choses normales sur la plate-forme cible et crée des instructions génériques et de bonne construction.
En outre, Cmake a une sortie colorée :) et de beaux pourcentages de progrès.
PS: J'ai juste une certaine expérience avec Clake et AutoTools sous Windows en tant qu'utilisateur. Cmake a tendance à travailler, AutoTools a tendance à me mordre l'oreille lorsque vous ne cherchez pas et vous souriez quand il échoue à cause d'une erreur étrange ...
Updated 16 janvier 2019: conseils raffinés comme des outils évoluent.
J'ai utilisé des autotools avant pour une durée considérable.
Actuellement, je fais une utilisation intensive de Meson et cmake uniquement lorsque j'en ai besoin.
Quelques conseils personnels:
pour les grandes équipes, collez-vous à CMAKE si vous souhaitez utiliser les générateurs pour Xcode. Si vous n'en avez pas besoin, j'utiliserais Meson directement. Meson, à partir de la version 0.49, prend également en charge la recherche de fichiers de configuration CUPAKE (bien que je n'ai pas encore testé à quel point cette fonction). En outre, Visual Studio semble être suffisamment bien soutenu à ce moment-là, cependant, encore une fois, je ne m'essayais pas. L'avantage de CMAKE est qu'il a une intégration de studio visuelle.
Drop AutoTools. Meson couvre bien tout. Leur modèle de compilation croisée est incroyablement compréhensible. En CMAKE, la dernière fois que j'ai vérifié, tout était assez difficile.
J'ai également essayé Scons , WAF , et TUP .
Le système de plate-forme multiplate-plate-forme la plus complète est CMake
, mais le DSL de Meson sera plus facile à utiliser pour les personnes utilisées pour python et autres. Meson commence à Support VS également (un générateur VS2015) et certains projets ont déjà un support expérimental pour celui-ci, par exemple Gstreamer. Gstreamer est compilé sous Windows avec Meson. Il y a maintenant un générateur VS2015 et vs2017 mais je ne m'essayais pas les générateurs ces derniers temps. À partir de Meson 0.37.1 nécessitait quelques travaux, mais ils les améliorent et la version actuelle est déjà de 0,40.
Meson
Avantages:
Les inconvénients:
cmake
Avantages:
Les inconvénients:
AutoTools
Avantages:
Les inconvénients:
À propos de la courbe d'apprentissage, il y a deux très bonnes sources à apprendre de:
La première source vous mènera et courbera plus rapidement. Le livre est une discussion plus approfondie.
De Scuons, WAF et TUP, SCONS et TUP sont plus comme faire. WAF est plus comme CUPAKE et les AutoTools. J'ai essayé la machine au lieu de la cmake au début. Je pense que c'est surgiré dans le sens où il a un plein OOP API. Les scripts n'ont pas l'air court du tout et c'était vraiment déroutant pour moi les trucs de répertoire de travail et les choses associées. À La fin, j'ai trouvé que les autotools et la cmake sont un meilleur choix. Mon préféré de ces 3 systèmes de construction est TUP.
TUP
Avantages
Les inconvénients
doc
, car ils génèrent des fichiers que je ne connais pas et ils doivent être énumérés dans la sortie avant d'être générés, ou du moins, c'est ma conclusion pour l'instant . C'était une limitation vraiment gênante, si c'est le cas, car je ne suis pas sûr.Dans l'ensemble, les seules choses que je considère en ce moment pour de nouveaux projets sont cmake et Meson. Quand j'ai une chance, je vais essayer de TUP aussi, mais il manque le cadre de configuration, ce qui signifie que cela rend les choses plus complexes lorsque vous avez besoin de tout ce genre de choses. D'autre part, c'est vraiment rapide.