Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python based build tools

I've been lately looking at build systems and I can't find anything close to what I want. I consider too low end, I don't like the syntax of bjam and CMake, and I really don't like that they are only for C/C++. Ant and NAnt are also too language oriented.

I really like the idea of a build tool that uses a real programming language and Python fits in really nice. I've been looking at Scons and waf, and from these 2 I find waf as the closest one to what I want, but still I see a lot of work that has to be done to support everything planned, when I should focus on coding.

Here is what I want:

  • includes and libraries (for C/ C++, Java, C#, Python)

  • I want to use different versions of compilers and support different target OS and CPU architectures:

    • for C / C++: MSVC, gcc(cygwin, mingw, linux version), llvm-gcc, DragonEgg, Clang
    • for C#: .Net compiler, Mono (for windows and linux) - all of these for different .Net versions (like NAnt's: 'net-2.0', 'net-3.5', 'net-4.0', 'mono-2.0', 'mono-3.5' ...)
  • I want to use SWIG to support wrapper generation for C#, Python, Lua, Java etc.

  • I want more then just Debug and Release configurations - just like Visual Studio supports this really easily. Example: shared library project built MSVC for C# wrapping, and built with mingw for Python wrapping, different versions of release versions - with non-optimized, fully optimized, production, obfuscated ...

  • I want it to consider project tracking. Explained: if I have a shared library project using SWIG, and a different C# project that loads that SWIG wrapping, building this solution/environment/workspace would imply copying the resulting shared library, copying other shared libraries that that shared library uses in the working directory, and the C# generated wrappers to the C# project, and then build the C# project

  • Nice-to-have: deployment on other machines for network testing

  • Nice-to-have: I don't really care for IDE project file generation (e.g. like CMake does for Visual Studio), because IDEs versions and compatibily change, and there are a ton of nice IDEs out there (e.g. for C/C++ CodeBlocks, CodeLite, Eclipse CDT - all of these are portable on thumb drive, VS is not), but Nice-to-have would be makefile integration - a makefile that that simply calls this Build tool's own makefile/script - seen something similar for Scons

Looking over what I wrote I think I asked too much :), but I think this will serve more then me

edit: forgot to say, but I think it is implied from the use of Python: I want the tool to be cross-platform

edit: perhaps what I am looking for isn't implemented yet, but it might exits a waf extension to all of this, or Scons maybe

like image 730
costy.petrisor Avatar asked Nov 09 '10 09:11

costy.petrisor


People also ask

What is build tool for Python?

In general, build tools are programs that automate the creation of executable applications from source code. When working with Python, build tools also need to account for: Downloading and managing dependencies. Compiling linked C and Fortran libraries, such as those used in data science projects.

Does Python have a build system?

The Python build system consists of a frontend user interface that integrates with a backend to build package artifacts. As I mentioned earlier, other options exist for both build frontends and backends. Some packages provide both a frontend and a backend, but I like build and Setuptools.

What are build tools in programming?

What Does Build Tool Mean? Build tools are programs that automate the creation of executable applications from source code. Building incorporates compiling, linking and packaging the code into a usable or executable form. In small projects, developers will often manually invoke the build process.


Video Answer


1 Answers

I used Scons and it is good and you can really do everything with it because just Python code so what missing you write in Python - it is easy.

Some say it has problem with very big projects, I didn't have very big projects to run it so I don't know.

like image 153
zaharpopov Avatar answered Sep 28 '22 06:09

zaharpopov