1. 15

    I’ve never bothered with qmake, but I’ve had some awful experiences with CMake. To be honest, whenever I see a project that requires CMake to build, I often just close the tab rather than even trying to build it, because CMake builds rarely - if ever - succeed.

    I agree with every point the article makes. For CMake being such a complex and “full-featured” build tool, it’s broken in pretty fundamental ways. Also the suckless guys don’t like it, and as some of the best C developers I’ve seen, that’s a pretty good reason to stay away from CMake.

    1. 12

      I’ve had the same experience. I’ve found that the simpler the build system, the more likely I’ll build it successfully. e.g. almost every project I’ve found that just uses plain old Makefiles I can figure out how to build. Even if it errors, it’s easy to see why/how and fix it.

      1. 5

        Exactly. Makefiles are simple and transparent (and somehow manage to be more standardized CMake). I know that make && make install will work with the vast majority of Makefiles, while the CMake command seems to vary for each project.

        1. 6

          On the contrary. I know that anything with a Makefile with fail spectacularly. Major cause: no configure step.

          Autotools is painfully slow, complicated and messy but generally works.

          I don’t see many CMake projects around but everything I have tried has worked I think.

          1. 3

            Is it possible that projects that use Make tend to be easier to build because they are usually smaller and less complicated than a project that needs the functionality of something like CMake or Autotools?

            1. 7

              OpenBSD is built without the use of CMake or Autotools. Just BSD make.

              1. 3

                OpenBSD would normally be built in an OpenBSD environment I would suspect, and has a configuration file.

                1. 4

                  I think you’re getting at it depending on one environment to build one environment. Whereas the other tools are smoothing over issues involving many environments.

          2. 3

            That’s the opposite of my experience back when I built software on interix, or when I cross-compiled for Angstrom. Any “complex” standardised build system - be that autotools, cmake, scons or something else - worked fine. Projects that used “simple” makefiles were impossible to build.

          3. 5

            I’ve maintained code both using cmake and plain make. Cmake is awful, and for a Unix project, I’d pick make any day. Cmake is also within epsilon of being your only option if you care about good Windows support, so I don’t see it going away in the near to medium term future.

            1. 6

              What? When I see a CMake project I can typically build it like this:

              cmake -G "Unix Makefiles"
              make
              

              On some projects with non-packaged dependencies, this does not work. But the same problem is true for Autotools projects that require the paths of certain dependencies to be specified during the configure step.

            1. 4

              I am not ready to make my own fonts, like the author.

              1. 7

                Can’t you avoid using a CDN by just hosting the files locally? I’m not sure why the author had to make his own font to avoid using a CDN. They seem like separate issues.

                1. 4

                  Agreed. I think the author was talking about reducing dependencies, in general.

                  1. 2

                    I’ve had issues doing the with Google Fonts for some reason. When I pass in variables they don’t seem to get parsed when I’m hosting the source. I could not figure out why some time ago but maybe I should try again.