2010-11-09 7 views
14

J'ai récemment regardé les systèmes de construction et je ne trouve rien de proche de ce que je veux. Je considère trop bas, je n'aime pas la syntaxe de bjam et CMake, et je n'aime vraiment pas qu'ils ne sont que pour C/C++. Ant et NAnt sont également trop axés sur la langue.Outils de construction basés sur Python

J'aime vraiment l'idée d'un outil de construction qui utilise un vrai langage de programmation et Python s'intègre vraiment bien. Je l'ai regardé Scons et waf et de ces 2 je trouve waf comme le plus proche de ce que je veux, mais je vois beaucoup de travail qui doit être fait pour soutenir tout prévu, quand je devrais me concentrer sur le codage.

Voici ce que je veux:

  • comprend et les bibliothèques (pour C/C++, Java, C#, Python)

  • Je veux utiliser différentes versions de compilateurs et de soutenir différentes cibles OS et les architectures de processeur:

    • C/C++: MSVC, gcc (cygwin, mingw, version Linux), llvm-gcc, dragonegg, Clang
    • pour C#: compilateur .Net, Mono (pour Windows et Linux) - tous pour différentes versions .Net (comme NAnt: 'net-2.0', 'net-3.5', 'net-4.0', 'mono-2.0' », 'mono-3,5' ...)
  • Je veux utiliser SWIG pour soutenir la production d'emballage pour C#, Python, Lua, Java, etc.

  • Je veux plus qu'un simple débogage et des configurations de version - tout comme Visual Studio le supporte très facilement. Exemple: projet de bibliothèque partagée construit MSVC pour l'encapsulation C#, et construit avec MINGW pour l'emballage Python, différentes versions de versions de version - avec non optimisé, entièrement optimisé, production, obfuscated ...

  • Je veux que le projet considère suivi. Expliqué: si j'ai un projet de bibliothèque partagée utilisant SWIG et un projet C# différent qui charge ce wrappage SWIG, la construction de cette solution/environnement/espace de travail impliquerait de copier la bibliothèque partagée résultante, copiant d'autres bibliothèques partagées que cette bibliothèque partagée utilise dans le travail répertoire, et le C# généré wrappers au projet C#, puis construire le projet C#

  • Nice-to-have: déploiement sur d'autres machines pour les tests de réseau

  • Nice-to-have: Je ne t attention vraiment pour la génération de fichiers de projet IDE (par exemple, comme CMake fait pour Visual Studio), parce que les versions IDE et changer de manière compatible, et il y a une tonne de bons IDE là-bas (par exemplepour C/C++ CodeBlocks, CodeLite, Eclipse CDT - tous sont portables sur une clé USB, VS n'est pas), mais Nice-to-have serait l'intégration de makefile - un makefile qui appelle simplement makefile/script de cet outil de construction - vu quelque chose de similaire pour Scons

Regarder par-dessus ce que j'ai écrit je pense que je demandais trop :), mais je pense que cela va servir plus de moi

edit: oublié de dire, mais je pense qu'il est implicite de l'utilisation de Python: Je veux que l'outil soit multi-plateforme

edit: peut-être que ce que je cherche n'est pas encore implémenté, mais il se peut qu'il sorte d'un waf extens Scons peut-être

+0

+1 Bonne question, cherchait exactement la même chose! – helpermethod

+0

Quelle est la question? Si quelqu'un connaît un tel outil de construction, cela supporte toutes les fonctionnalités demandées, mais cela pourrait être plus clair. – unwind

+0

@unwind: vous avez fait un point, je m'explique assez dur, mais spécifique –

Répondre

2

J'ai utilisé Scons et il est bon et vous pouvez vraiment tout faire avec car il suffit de code Python donc ce qui manque vous écrivez en Python - c'est facile.

Certains disent qu'il a un problème avec de très gros projets, je n'ai pas eu de très gros projets pour l'exécuter donc je ne sais pas.

+0

la seule chose que j'ai trouvé comme inconvénient de Scons et waf était qu'ils ont un compilateur par défaut, en choisissant un semble gentil d'une option cachée –

+0

et une autre chose qu'ils font mal tous les deux si vous me demandez, est de construire des configurations (comme je l'ai dit, en passant au-delà du point de débogage et de sortie) –

Questions connexes