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...
But I think CMake and Make is still going to dominate in the near term because of ubiquitous support and longevity.
Jordan Lopez
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.
Angel Smith
What else do I use for cross platform then?
Camden Young
You'd rather they use shell scripts? Make is really easy, sorry you're too low brain to understand a basic declarative language.
Josiah Nelson
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.
Colton Roberts
What about scons?
Hudson Harris
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.
Joseph Lopez
>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.
Ryder Stewart
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.
Logan Bell
you are an autist. holy shit get laid faggot
Michael Long
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
Ryder Mitchell
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.
Cameron Sanchez
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
Lincoln Fisher
I just copy my premade generic Makefile in any project I make
Julian Wright
>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
Michael Bell
Should I learn make or Cmake for cross platform compilation?
Jacob Martinez
>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.
Blake Flores
Having a build system means not limiting yourself to one language, though
Robert Diaz
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
Zachary Morales
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.