<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: El Dockerr</title>
    <description>The latest articles on DEV Community by El Dockerr (@el_dockerr).</description>
    <link>https://dev.to/el_dockerr</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3578284%2F1a2ae246-77f3-4dce-9fab-b32a32374a2a.jpg</url>
      <title>DEV Community: El Dockerr</title>
      <link>https://dev.to/el_dockerr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/el_dockerr"/>
    <language>en</language>
    <item>
      <title>I hacked a CMAKE replacement, and maybe it's for you</title>
      <dc:creator>El Dockerr</dc:creator>
      <pubDate>Wed, 22 Oct 2025 07:55:35 +0000</pubDate>
      <link>https://dev.to/el_dockerr/i-hacked-a-cmake-replacement-and-maybe-its-for-you-21l3</link>
      <guid>https://dev.to/el_dockerr/i-hacked-a-cmake-replacement-and-maybe-its-for-you-21l3</guid>
      <description>&lt;p&gt;Let’s be honest: CMake can feel like trying to read hieroglyphs while blindfolded.&lt;br&gt;
Half the time it’s fighting you, the other half it’s pretending to help. And I use Linux at home and Microsoft at work. Bringing this together as a C++ developer is very painful.&lt;/p&gt;

&lt;p&gt;So... I built something else.&lt;br&gt;
Meet Bodge — The Idiotic Build System.&lt;/p&gt;
&lt;h2&gt;
  
  
  🧠 What Is “Bodge”?
&lt;/h2&gt;

&lt;p&gt;bodge [/bɒdʒ/ verb] — make or repair (something) badly or clumsily.&lt;/p&gt;

&lt;p&gt;Yeah. The name is self-aware.&lt;/p&gt;

&lt;p&gt;I was frustrated by fiddling around with CMAKE on windows, and Visual Studio is absolutely painful and I was wondering why nobody tackled this issue. &lt;br&gt;
So, as I learned in my puberty as a nerd, when nobody is willing to do, do it yourself, it started as a weekend experiment to see if I could make something that just builds C++ projects without ceremony — and before I knew it, I’d bodged together a fully functional cross-platform build system. Okay - to be honest I was wondering how easy it can be to have something in place that matches MAVEN or Cargo for C++. (See: &lt;a href="https://github.com/el-dockerr/bodge" rel="noopener noreferrer"&gt;https://github.com/el-dockerr/bodge&lt;/a&gt;)&lt;br&gt;
And it was perfect for my work as well, so I spread the work in my Company, and in no time we had something useful that shrink the toolchain and dependencies. Just a G++ compiler and Bodge in place.&lt;br&gt;
Without working around on CMAKE to get it run on Windows.&lt;br&gt;
Same on Linux - just G++ and Bodge with a nice sleek &lt;code&gt;.bodge&lt;/code&gt; file. No &lt;code&gt;make&lt;/code&gt; no &lt;code&gt;cmake&lt;/code&gt;, no wrong encoding, and no wrong formatting.&lt;/p&gt;

&lt;p&gt;It’s minimal.&lt;br&gt;
It’s hacky.&lt;br&gt;
It’s surprisingly powerful.&lt;br&gt;
And it might actually replace CMake one day (if I’m crazy enough to keep going).&lt;/p&gt;
&lt;h2&gt;
  
  
  🧩 Why Bodge Exists
&lt;/h2&gt;

&lt;p&gt;If you’ve ever wrestled with CMake or other meta-build tools, you know the pain:&lt;/p&gt;

&lt;p&gt;Layers of cryptic commands,&lt;/p&gt;

&lt;p&gt;endless dependency hell,&lt;/p&gt;

&lt;p&gt;and the creeping feeling that your build files are writing themselves.&lt;/p&gt;

&lt;p&gt;Bodge aims to fix that by being simple, declarative, and self-contained — like Cargo for Rust or Maven for Java, but for good old C++.&lt;/p&gt;

&lt;p&gt;All you do is define what you want to build, what compiler to use, and what libraries you depend on.&lt;br&gt;
That’s it.&lt;br&gt;
No ceremony. No black magic.&lt;/p&gt;

&lt;p&gt;Here’s the best part: Bodge can even fetch your dependencies directly from Git repos, build them, and chain everything together automatically.&lt;/p&gt;
&lt;h2&gt;
  
  
  ⚙️ The Philosophy
&lt;/h2&gt;

&lt;p&gt;I wanted to design a build system that:&lt;/p&gt;

&lt;p&gt;Uses a single human-readable config file (.bodge)&lt;/p&gt;

&lt;p&gt;Works identically on Windows, Linux, and macOS&lt;/p&gt;

&lt;p&gt;Lets you define dependencies, build sequences, and targets without tears&lt;/p&gt;

&lt;p&gt;Doesn’t require external generators or a PhD in scripting&lt;/p&gt;

&lt;p&gt;The dream?&lt;br&gt;
A single executable that builds your C++ project — clean, predictable, and portable.&lt;/p&gt;
&lt;h2&gt;
  
  
  🧱 A Minimal Example
&lt;/h2&gt;

&lt;p&gt;Here’s a dead simple .bodge file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name: MyProject
compiler: g++
output_name: my_app
cxx_flags: -std=c++17, -Wall, -O2
sources: src/**
include_dirs: include
libraries: pthread, m
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s all it takes.&lt;br&gt;
Run &lt;code&gt;bodge&lt;/code&gt; and you’ve got your binary. 🎉&lt;/p&gt;

&lt;p&gt;Want to build for Windows or Linux specifically?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bodge --platform=windows_x64
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or check what platforms are available:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bodge platform
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It’s that easy.&lt;/p&gt;

&lt;h2&gt;
  
  
  💡 Key Features
&lt;/h2&gt;

&lt;p&gt;Bodge already does a lot — and I keep adding new stuff as I go. Some highlights:&lt;/p&gt;

&lt;h3&gt;
  
  
  🧩 Multi-Target Support
&lt;/h3&gt;

&lt;p&gt;Build executables, shared libs, and static libs — all from one config.&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚙️ Automatic Source Collection
&lt;/h3&gt;

&lt;p&gt;Just point to a folder (src/**), and Bodge gathers all .cpp files recursively.&lt;/p&gt;

&lt;h3&gt;
  
  
  🚀 Daemon Mode
&lt;/h3&gt;

&lt;p&gt;Yes, it can watch your source tree and rebuild automatically when you save.&lt;br&gt;
Perfect for active development and CI setups.&lt;/p&gt;
&lt;h3&gt;
  
  
  🪄 Build Sequences
&lt;/h3&gt;

&lt;p&gt;Create workflows like “build → package → deploy” directly in your .bodge file:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sequence.deploy: build:main mkdir:dist copy:my_app.exe-&amp;gt;dist/my_app.exe&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  🌍 Cross-Platform by Design
&lt;/h3&gt;

&lt;p&gt;Supports Windows, Linux, Unix, macOS, ARM, and x86/x64 — automatically detecting your system and applying platform-specific flags.&lt;/p&gt;
&lt;h3&gt;
  
  
  🔗 Git Dependency Fetching
&lt;/h3&gt;

&lt;p&gt;Need a 3rd-party library? Just list its repo in &lt;code&gt;.bodge&lt;/code&gt;, and it’ll pull and include it automatically.&lt;br&gt;
No more “clone this, copy that, run this script” nonsense.&lt;/p&gt;
&lt;h2&gt;
  
  
  🧰 Example: Multi-Target Project
&lt;/h2&gt;

&lt;p&gt;Here’s a more advanced setup to give you an idea of Bodge’s structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name: MultiTarget
compiler: g++
global_cxx_flags: -std=c++17, -Wall, -static-libgcc, -static-libstdc++
global_include_dirs: include
# Shared library
libcore.type: shared
libcore.output_name: core
libcore.sources: src/lib/**
# Executable that depends on it
app.type: exe
app.output_name: my_app
app.sources: src/**
app.libraries: core
# Build all
sequence.build_all: build:libcore build:app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can build everything or just one target:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bodge build app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or run a whole workflow sequence:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bodge sequence build_all
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🔁 It Builds Itself
&lt;/h2&gt;

&lt;p&gt;Yep.&lt;br&gt;
You can build Bodge using Bodge.&lt;br&gt;
That was my personal “it’s alive!” moment.&lt;br&gt;
Just run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bodge --platform=windows_x86
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or, if you’re feeling nostalgic:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;make all
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  💾 Download
&lt;/h2&gt;

&lt;p&gt;You can grab precompiled binaries for Windows, Linux, and macOS from the GitHub Releases&lt;br&gt;
.&lt;br&gt;
Or clone the repo and build from source (it’s super straightforward).&lt;/p&gt;

&lt;h2&gt;
  
  
  ❤️ Why You Might Love It
&lt;/h2&gt;

&lt;p&gt;Bodge is not trying to be smarter than you — it’s trying to get out of your way.&lt;br&gt;
You tell it what you want, it builds it, and it doesn’t argue.&lt;/p&gt;

&lt;p&gt;If you’re tired of CMake boilerplate or opaque “meta scripts,” Bodge might just be the breath of fresh air you’ve been waiting for.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧑‍💻 Contribute or Follow Along
&lt;/h2&gt;

&lt;p&gt;This is still an early-stage project, but it’s already working nicely for small and medium C++ projects.&lt;br&gt;
If you’re curious, or if you’ve cursed at CMake recently (we all have), check it out: &lt;a href="https://github.com/el-dockerr/bodge" rel="noopener noreferrer"&gt;https://github.com/el-dockerr/bodge&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  👉 GitHub: Bodge – The Idiotic Build System
&lt;/h2&gt;

&lt;p&gt;Give it a ⭐ if you like where it’s going — it really helps me stay motivated to push the next features.&lt;/p&gt;

&lt;h2&gt;
  
  
  ☕️ Final Thoughts
&lt;/h2&gt;

&lt;p&gt;I didn’t set out to reinvent the wheel — I just wanted one that didn’t squeak.&lt;br&gt;
If you’ve ever thought “CMake is overkill for my project,” give Bodge a try.&lt;br&gt;
It’s small, self-contained, and fun to use — just the way C++ building should be.&lt;/p&gt;

&lt;p&gt;Let’s make C++ building less painful, one bodge at a time.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>cpp</category>
      <category>tooling</category>
      <category>c</category>
    </item>
  </channel>
</rss>
