Re:Allowing CMake functions to return(value)
by de_watcher on Wednesday August 19, 2020 @03:45AM
(#24208122)
Make is like an assembly language of the build systems. This layer gives structure and debuggability (otherwise you're spending time poking at some opaque UI or something).
Re:Allowing CMake functions to return(value)
by anand-bala on Wednesday August 19, 2020 @01:22AM
(#24207409)
This is true for Autotools projects, but isn't true for CMake, Bazel, Meson, and others. Let's take CMake for example, which is IMHO the most popular build tool: most modern CMake projects prefer to use the Ninja build system over Make.
And coming back to Autotools, some of the largest Autotools projects (see the GNOME ecosystem) has been moving/moved to Meson, which can also be used to generate Ninja rules instead of Makefiles.
CMake Generators: https://cmake.org/cmake/help/latest/manual/cmake-generators.... Meson: https://mesonbuild.com/ Bazel: https://bazel.build/
GNOME and Meson: https://wiki.gnome.org/Initiatives/GnomeGoals/MesonPorting
Re:Allowing CMake functions to return(value)
by rumanator on Wednesday August 19, 2020 @01:55AM
(#24207561)
> Autotools generate a Makefile project
That's what all build systems do. Hell, cmake's description is "cross-platform Makefile generator".
The rationale is quite obvious: the DAG part is solved problem. The hard part is extracting platform-dependent info, perform validations, and use it to generate the DAG.
And a Makefile is a DAG.
Also note that not all Autotools-based projects use Automake. Using only Autoconf, with a hand-maintained Makefile, is a thing.
The goal of Autotools is to produce a software distribution that doesn't require the end user to have Autotools. The end user has a shell to run the configure script, and that's it. If that works, they run "make".
About the most sophisticated generation the user will see is that some Makefile.in template is passed through sed to substitute @@XYZ@@ variables.