4 ms·
It seems aimed at making the trivial use cases easy, the normal use cases hard, and the hard use cases impossible. For example, "exe", "dll" and "lib" are type
by HelloNurse 5y ago
It seems aimed at making the trivial use cases easy, the normal use cases hard, and the hard use cases impossible.
For example, "exe", "dll" and "lib" are types of projects, not of individual files: no apparent way to have multiple and heterogeneous end products (e.g dynamic libraries + static libraries + test executables + something not C/C++ like Doxygen) or to define variants like compiling the same program as a statically linked big executable or as a thin executable and a bundle of dynamic libraries.
Lack of documentation is another serious problem. For example, how do I pass exotic GCC flags and how can I ensure that qb uses GCC instead of MSVC?
"Zero configuration" in serious systems means self-configuration, e.g. automatically finding and inspecting available compilers, to provide added value over completely manual configuration; denying configuration, or at least not thinking of it because no toy example has needed it so far, isn't very productive for the end user.
- arinlen 5y ago> It seems aimed at making the trivial use cases easy, the normal use cases hard, and the hard use cases impossible. I'd add that mainstream build systems already covered this sort of usecase. For instance, qmake used templates[1]. With CMake anyone can put together their own macro, and have config-free cmake projects. In fact, I've already worked on projects that followed this approach. I guess it's all fine and dandy when all you do is follow the happy path, but that's hardly the case. [1] https://doc.qt.io/qt-5/qmake-variable-reference.html#template https://doc.qt.io/qt-5/qmake-variable-reference.html#templat...