Python is great but it's a general-purpose language. A build system needs a domain-specific language, otherwise all but trivial tasks will require very verbose code. CMake should converge to conventions that are almost universal in modern interpreted languages, but having a DSL instead of whatever g.p. interpreted language happens to be fashionable today is a wise choice.
I'm very confused by the C++20 modules part. Are you trying to make CMake figure out module dependencies automatically? That sounds kind of crazy. Why not just do what Bazel has been doing for ages?
Modules != packages. A module is a unit of code, kind of a combined cpp + hpp file, optionaly combined with implementation units and partition units. A package can be composed of many modules. The dependencies he talk about are that when you import a module from another file, that file *must* be compiled first. If the other file has not be compiled first, the build fails. So the build system must scan the dependencies before compiling those files.
Python is great but it's a general-purpose language. A build system needs a domain-specific language, otherwise all but trivial tasks will require very verbose code. CMake should converge to conventions that are almost universal in modern interpreted languages, but having a DSL instead of whatever g.p. interpreted language happens to be fashionable today is a wise choice.
I would like to see support for a FASTBUILD as a generator.
Why is it so hard for people to explain CMake, this is perfect example, i just wasted an hour in this, gained zero.
I suppose if it was expanded here, there would be no need for paid courses.
I'm very confused by the C++20 modules part. Are you trying to make CMake figure out module dependencies automatically? That sounds kind of crazy. Why not just do what Bazel has been doing for ages?
Modules != packages. A module is a unit of code, kind of a combined cpp + hpp file, optionaly combined with implementation units and partition units. A package can be composed of many modules. The dependencies he talk about are that when you import a module from another file, that file *must* be compiled first. If the other file has not be compiled first, the build fails. So the build system must scan the dependencies before compiling those files.
"Professional Cmake" is bad. It lists all commands but with hardly any paradigmatic examples. I learned more from asking on reddit.
Exactly