3 ms·
My findings as a spartan C programmer: I've been using a simple unity-build ad-hoc build.bat/build.sh "system" for years now, works wonders. YAGNI will serve
by properparity 4y ago
My findings as a spartan C programmer:
I've been using a simple unity-build ad-hoc build.bat/build.sh "system" for years now, works wonders.
YAGNI will serve you well, 99.99999(repeating)% of everyone's code will only be built and run on 1, maybe 2 platforms, why bother with these insane monstrosities that we call 'build systems"?
The few times I've needed to build for a new platform I just wrote that build script then and there, took a few minutes and that was it.
Modern machines can churn through a tens if not hundreds of K lines of C code in less than a second, so incremental builds aren't needed either (and if anything, with too many translation units you end up with linking being a bottleneck).
Single TU benefits:
- Global optimizations "for free".
- Make all functions static (except main) and you get --gc-sections "for free".
- Linking is blazingly fast.
- Don't have to bother with header files.
- No one has to download anything to built my code, I make it work on a default msvc/gcc/clang install (i.e if you have gcc, cl or clang in your path when running build.bat/build.sh, it will build).
- cout 4y agoI'm a fan of using two translation units: * one TU with code that is fast to compile and modified often * another TU with code that is slow to compile but modified rarely I still use header files, but the fast-to-compile and modified-often code goes directly into headers, so I can still organize my code into separate files.
- akkartik 4y agoI got sick of juggling code that migrated from one category to the other, so I wrote a little script that deals with chopping up a large source file into multiple TUs before feeding them to the compiler. https://github.com/akkartik/mu1/blob/master/build2 https://github.com/akkartik/mu1/blob/master/build2 More details: https://news.ycombinator.com/item?id=33574154#33575045 https://news.ycombinator.com/item?id=33574154#33575045