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:
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
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.
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 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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With