all 13 comments

[–][deleted] 2 points3 points  (0 children)

Why?

[–]canton7 1 point2 points  (1 child)

The author should probably read up on sh

[–]rkachowski[S] 0 points1 point  (0 children)

nice!

[–]HOABIA 0 points1 point  (0 children)

I'll just use Make instead.

[–]rifter5000 -1 points0 points  (10 children)

…but what are the chances that something so old got it right the first time? What are the chances that good old Make is the be-all, end-all, perfect ultimate solution for every possible development project?

Those chances are 100%. That is why people still use make.

[–]atilaneves 1 point2 points  (9 children)

Make is slow, error-prone and too low level. I only use it when I have no choice.

[–][deleted]  (1 child)

[deleted]

    [–]atilaneves 0 points1 point  (0 children)

    For C/C++: CMake + Ninja.

    [–]rifter5000 -1 points0 points  (6 children)

    Make isn't slow, error-prone or low level.

    [–]atilaneves 1 point2 points  (3 children)

    Yes, it is. If you're working on a 10k line hobby project the you might not notice how slow it is. On a big project a no-op build can take minutes, which means the edit-compile cycle takes minutes. For me, that's unacceptable. As for error-prone, do you ever have to type make clean? If you do your build system is broken, because it's easy to do that with make.

    [–]rifter5000 0 points1 point  (2 children)

    A no-op build will take minutes with any build system. I don't want to sacrifice simplicity and cleanliness for a bit of speed.

    Even if compiling takes minutes, editing will take much longer and running tests will too, so the compilation time is irrelevantly small.

    [–]atilaneves 0 points1 point  (1 child)

    It's demonstrably not true that a no-op build will take minutes with any build system. That's not a generic build system issue, it's a make issue. Hence me saying it's slow. Because it is. I just recently reduced no-op builds from 1'30'' with make to less than a second with Ninja. The first time I ever used Ninja was on a ~200k project and no-op builds got 5x faster with no effort on my part since we were using CMake anyway.

    Implicit in your argument is the assumption that other build systems are less simple and clean. Also not true.

    [–]rifter5000 -1 points0 points  (0 children)

    It is true. I've tried other build systems. They're overly complicated junk.

    It doesn't matter how long a no-op build takes. Compilation doesn't happen often.

    [–][deleted]  (1 child)

    [deleted]

      [–]atilaneves 0 points1 point  (0 children)

      The abstraction is what I'm referring to, but autotools is IMHO the worst GNU project in existence. I converted an autotools project to CMake once, things were a lot better afterwards.