Linux build system tool

Our project has grown quite large and our build system is no longer scalable. We are doing cross-platform development on Linux machines. We have too many platforms to build against and even more build options. We think we need to update the build environment based on the Makefile.

These are the requirements (in an ideal world):

  • Fast (so no libtool)
  • Can do parallel builds
  • Cross compilation
  • Ccache integration
  • Builds gradually and there may be a short circuit if certain conditions are met (short circuit if the parameters a, b, c have not changed, rebuild if they did)
  • Ease of scripting (python integration would be ideal)
  • Friendly syntax
  • Distributed system. Modules can be designed separately from each other.
  • Can build third party libraries (which use autotools, cmake ..)
  • Can track dependencies between modules (but flexible enough so that modules can be replaced with alternative external ones). In the meantime, there is no need to know about it. ”
  • support for built-in test modules
  • Large binaries can be stored separately from source control and can be downloaded as needed
  • Open source licenses can be tracked.
  • git integration

Do you know of any tools (or group of tools) that would meet (at least some) these requirements? I am currently leaning towards gyp + ninja. But the syntax is not very friendly and there is no documentation. So this is a hard sell.


source to share

3 answers

You mention Python integration, so SCons sounds like it fits the bill. It is completely Python based (build scripts are actually Python scripts), it is very flexible, and it fulfills many other requirements.

On the website:

SCons is an open source software building tool, that is, a next generation building tool. Think of SCons as an improved cross-platform replacement for the classic Make utility with built-in functionality like autoconf / automake caches and compiler caches like ccache. In short, SCons is an easier, more reliable and faster way to build software.



As far as C ++ is concerned, CMake build system is very good .



ninja should not be used by an end user and not by some other high level build tool like CMake. And this is a really good option, especially for large and cross-platform projects. It doesn't have built-in python support, but you rarely or never need external scripting using CMake - it has the tools for most common tasks.



All Articles