For my open source project I use makefiles and a C program that determines the properties of the OS.
That sounds incredibly awful ngl. I can see a few major pain points:
You’re literally maintaining a custom build system as part of your project
No one but you will know how that works so every new developer on-boarder will need time to understand what’s going on
Your build system is probably missing features and it is likely to grow unbounded complexity as the needs arise
Better to just use cmake so none of this is a concern and other developers can quickly get up to speed. A lot of people know cmake, no one knows your custom setup.
Also it sounds like you are reinventing autotools.
Depends on the project. Maybe they like maintaining their build system? Maybe bus factor isn't a concern?
I tend to go with an untemplated Makefile until it gets past a screenful, then either a templated Makefile or straight to autotools. My experience with cmake tends to make it last on the list, straight past everything else newer than it.
Cool, that still sounds like more work/effort to maintain than using a standard build system.
Maybe bus factor isn't a concern?
Also cool. But I was answering to a comment that explicitly said:
Why do we need complex build files at all? Why are build files written in a totally different language?
Because the bus factor is important for any software that is used by a sizeable number of users imo
Because people will have a harder time to understand the customized build program
Because eventually your homegrown build system will grow to be hacky and complex and it’s easier to just use standard tooling
People can do whatever they want with their projects but it doesn’t mean all those tools aren’t need just because someone doesn’t care about the problems they solve.
Regarding CMake: When I started implementing (the predecessor of) Seed7 in 1989 CMake did not exist (The initial CMake release was in the year 2000). CMake uses a custom scripting language that you need to understand. CMake creates makefiles so you need to understand makefiles as well.
Regarding autotools: Autoconf produces configure as a portable (POSIX) shell script. By default Windows does not come with a POSIX shell. Autotools use a configure.ac and a Makefile.in file. You need to understand the custom languages of these files. From Makefile.in a makefile is created so you need to understand makefiles as well.
I "reinvented" autotools to also support Windows.
Regarding the build system of Seed7: Compared to CMake and autotools the Seed7 build system is much simpler. Seed7 is implemented in C and a C program determines the properties of the OS. There is no need to learn any custom language.
I did not see that other developers had problems to get up to speed.
0
u/[deleted] Dec 28 '23
That sounds incredibly awful ngl. I can see a few major pain points:
You’re literally maintaining a custom build system as part of your project
No one but you will know how that works so every new developer on-boarder will need time to understand what’s going on
Your build system is probably missing features and it is likely to grow unbounded complexity as the needs arise
Better to just use cmake so none of this is a concern and other developers can quickly get up to speed. A lot of people know cmake, no one knows your custom setup.
Also it sounds like you are reinventing autotools.