Serious question: why do people use make/cmake for small or small-ish medium projects...

Serious question: why do people use make/cmake for small or small-ish medium projects? I understand why they'd use it for larger projects, or ones with a fuckton of dependencies, but cmake and make can be a minor pain in the ass sometimes and the syntax is so ugly.

I've been thinking about writing a simple, clean build system using a sane language for configuration that's easier to setup and maintain for small projects, but I'm guessing there's a reason something like this doesn't exist yet...

Other urls found in this thread:

xkcd.com/927/
mesonbuild.com/
twitter.com/SFWRedditImages

>I've been thinking about writing a simple, clean build system
Yes please build us another build system that's all we need.

Use ninja

I'd still have to use CMake unless I wanted to write ninja builds manually (which it's not made for).

They use it because there are no other options.
Lack of standard package management is one of the major reasons I hate C++

because CLion is pretty nice to work in

Why don't you like cmake? I used it for small projects and it was ok.

xkcd.com/927/


CMake is great

CMake does not work.

it does

Of course it doesn't. You are using Windows.

CMake is shit

-->

I know how to do makefiles, but no experience with CMake. Is it hard to migrate to?

Meson

mesonbuild.com/

Gnome is starting to use it.

But I think CMake and Make is still going to dominate in the near term because of ubiquitous support and longevity.

Unfortunately CMake generates horribly non-performant ninja code. Thus ninja is irrelevant, because it's meant to be generated yet there are no good generators.

Meson is mostly getting pushed by the Freedesktop.org crowd, so I'm skeptical that it will see uptake anywhere else. These are the same guys who thought Vala was the next big thing. Many of the claims that are made about Meson now were made about CMake too, and look how that turned out.

What else do I use for cross platform then?

You'd rather they use shell scripts? Make is really easy, sorry you're too low brain to understand a basic declarative language.

I shouldn't need to learn a language and API to compile a fucking program. The problem isn't "2 hard lol" it's I don't want to fucking bother learning a pseudo-language and all it's weird functions that shouldn't exist in the first place.

What about scons?

So you manually keep track of source changes and compile single objects?

Let's be honest, you've never worked on a project larger than two files. It really shows.

>what is git
I've worked on projects with 20-30 files. And I'm not a library developer, so yes I do compile single objects, they're called executables.

A simple shell script isn't smart enough to rebuild only the outputs whose dependencies have changed, which is a big deal for non-trivial projects.

20-30 source files is tiny dude. Come back when you've worked on non toy programs.

you are an autist. holy shit get laid faggot

Depending on the size of the files, 20-30 can be nontrivial. Quit acting like the big manly man and just accept that some people do things differently

The main thing is that most languages that do AOT compilation don't see packaging and build related stuff as part of the language ecosystem so you have various silos of different build options.

Even in Rust, where the build system, Cargo, is tightly knit with the language, you still have to learn the syntax and various options, which is basically pretty much another language/API to learn.

Sorry that software development in compiled languages isn't as easy as in interpreted languages and etc. where you can just ship the bytecode/script itself and have the end user run it somehow. Either deal with it or move to interpreted languages.

make is a standard Unix tool and unless you opt for using GNU extensions it is preinstalled and runable on every at least slightly posix compliant system
just fucking learn it, it's easy and you make yourself look retarded because you obviously never ever tried yet rant about it
CMake is hell

I just copy my premade generic Makefile in any project I make

>so yes I do compile single objects, they're called executables.

>rebuilds the entire project every time

Ladies and gentleman, neo-Sup Forums at work

Should I learn make or Cmake for cross platform compilation?

>Serious question: why do people use make/cmake for small or small-ish medium projects? I understand why they'd use it for larger projects, or ones with a fuckton of dependencies, but cmake and make can be a minor pain in the ass sometimes and the syntax is so ugly.
It's pretty much the only multiplatform metabuild system without dependencies like Python.
>I've been thinking about writing a simple, clean build system using a sane language for configuration that's easier to setup and maintain for small projects, but I'm guessing there's a reason something like this doesn't exist yet...
The mistake everyone including Meson makes is creating a language DSL for build systems. Non-trivial projects - LibreOffice is a good example - often require custom scripts, so you might make the build system a library DSL for Python/Ruby/Whatever.
Of course, the first mistake is requiring a build system in the first place and Crystal/Jai/CommonLisp were right.

Having a build system means not limiting yourself to one language, though

I use make in almost everything, mostly generic makefiles though, for Python it has a test runner, docs generator, dependencies and virtualenv stuff. For latex it just adds the commit hash to the file, runs latexmk and moves the pdf.

My static website generator is actually a single makefile too that uses sed, less and markdown-py

meson is much nicer than CMake. Configuring multiple compile targets with CMake is hell. You can't easily tell it to use another compiler for cross compilation.