Question

J'utilise très souvent les outils automatiques de GNU (principalement Autoconf , parfois Libtool ). Je travaille sur un projet dans lequel la portabilité va devenir un point d'achoppement. Cependant, le reste de l'équipe n'est pas à l'aise avec le travail avec m4 . J'ai ceci dans ma boîte de réception de non pas une, mais quatre personnes:

m4 n

Quoi qu'il en soit, quelqu'un pourrait peut-être recommander quelque chose en Python ou en PHP? Je travaille sur l'extrémité C d'un arbre beaucoup plus grand; Je peux être sûr que Python ou PHP 5 seront présents, car ils constituent des conditions préalables.

Était-ce utile?

La solution

J'ai entendu de bonnes choses sur CMake qui tente de résoudre les mêmes problèmes. Voici l'article de Wikipédia

Autres conseils

Je profite de la chance d'être voté mais, je dois l'avouer, il n'y a malheureusement pas de véritable substitut à l'autotools. CMake, SCons, Bjam sont bien, mais quand il s'agit de travailler sérieusement ... il est clair que les outils automatiques sont supérieurs, pas parce que CMake ne peut pas faire la même chose, mais parce que c'est beaucoup plus difficile de le faire avec ça .

Par exemple, CMake, l’alternative la plus populaire aux outils automatiques, présente les inconvénients suivants:

  • Pas de support de gettext. Cela peut constituer un réel problème lorsque vous devez gérer un grand nombre de traductions et de code source traduit.
  • Pas de support pour une cible de désinstallation. Il est assez désagréable de savoir que vous ne pouvez pas désinstaller le programme que vous avez installé.
  • Aucune construction automatique des bibliothèques à la fois partagées et statiques .
  • La documentation est très limitée et mauvaise.

Et ainsi de suite.

Il y a beaucoup d'autres points. Malheureusement, il n’existe pas de véritable substitut de haute qualité aux autotools. Par contre, si vous développez sous Windows et pour Visual Studio, vous ne pouvez pas utiliser autotools et vous devez choisir CMake qui fournit de tels outils.

Les SCons ont rencontré un vif succès. Il est construit avec Python et les scripts de construction sont en réalité des scripts Python eux-mêmes, ce qui donne beaucoup de pouvoir expressif. Sur le site Web:

  

SCons est un outil de construction de logiciel Open Source, c’est-à-dire un outil de génération de nouvelle génération. Considérez SCons comme un substitut amélioré multiplate-forme de l'utilitaire classique Make avec une fonctionnalité intégrée similaire à autoconf / automake et des caches de compilateur tels que ccache . En bref, SCons est un moyen plus simple, plus fiable et plus rapide de créer un logiciel.

Il existe de nombreux générateurs de Makefile et systèmes de construction alternatifs:

Également disponible, mais pas ciblé strictement sur C / C ++:

Mais après avoir énuméré tous ces éléments, les outils automatiques ont le grand avantage de ne nécessiter aucune autre dépendance pour l'utilisateur final. Un script de configuration est généré une seule fois par le développeur et ne nécessite aucune opération particulière de la part de l'utilisateur, car il s'agit d'un script shell. Les outils énumérés ci-dessus doivent être installés avant que quiconque puisse construire votre source. Ils pourraient même avoir des dépendances.

Pourquoi ne pas utiliser simplement Make et pkg-config ?

Voici un modèle de Makefile pour vous aider à démarrer.

Moins, c'est plus de gens.

Encore un remplacement * automatique - mk-configure . Vous pouvez trouver des documents ici

J’ai jeté un œil à CMake, qui semble être une bonne alternative sauf si vous effectuez une compilation croisée. Si vous faites une compilation native, vous devriez l’essayer

Une version python de make est en cours de création chez Mozilla - pymake - qui supporte vraisemblablement une utilisation multiplateforme.

Pour la construction de logiciels C / C ++ à partir d'ANT ou de maven, terp peut vous intéresser. Il inclut une tâche de compilateur C ++ portable qui fonctionne avec de nombreux compilateurs C ++ sur de nombreuses plateformes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top