<?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: chase sunstrom</title>
    <description>The latest articles on DEV Community by chase sunstrom (@chase_sunstrom).</description>
    <link>https://dev.to/chase_sunstrom</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%2F3170909%2F7d5ffd98-d74e-41a1-a5b5-6812510d7c58.jpg</url>
      <title>DEV Community: chase sunstrom</title>
      <link>https://dev.to/chase_sunstrom</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/chase_sunstrom"/>
    <language>en</language>
    <item>
      <title>CForge – A Modern C++ Build System</title>
      <dc:creator>chase sunstrom</dc:creator>
      <pubDate>Fri, 16 May 2025 15:37:14 +0000</pubDate>
      <link>https://dev.to/chase_sunstrom/cforge-a-modern-c-build-system-174j</link>
      <guid>https://dev.to/chase_sunstrom/cforge-a-modern-c-build-system-174j</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;CForge replaces complex CMake scripts with a single &lt;code&gt;cforge.toml&lt;/code&gt; file that defines targets, build options, and dependencies in a clear, human-readable format. It was created by &lt;strong&gt;Chase Sunstrom&lt;/strong&gt; to address pain points voiced by C/C++ developers on Reddit and to provide a Cargo-like experience for C++ projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I Created CForge
&lt;/h2&gt;

&lt;p&gt;Early feedback on Reddit channels such as &lt;code&gt;r/cpp&lt;/code&gt; and &lt;code&gt;r/gamedev&lt;/code&gt; highlighted frustration with verbose CMake configurations and fragmented dependency workflows. Many developers expressed interest in a tool that integrates dependency fetching via &lt;strong&gt;vcpkg&lt;/strong&gt; and Git while automating workspace handling. Contributions and issue discussions on GitHub further demonstrated the need for streamlined cross-platform builds and better IDE support.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  TOML-Based Configuration
&lt;/h3&gt;

&lt;p&gt;Define your entire project, from source directories to build flags, in &lt;code&gt;cforge.toml&lt;/code&gt; without writing CMake scripts by hand:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[project]&lt;/span&gt;
&lt;span class="py"&gt;name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"myproject"&lt;/span&gt;
&lt;span class="py"&gt;version&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"0.1.0"&lt;/span&gt;
&lt;span class="py"&gt;cpp_standard&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"17"&lt;/span&gt;
&lt;span class="py"&gt;binary_type&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"executable"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Dependency Management
&lt;/h3&gt;

&lt;p&gt;Native integration with vcpkg, Git repositories, and custom scripts ensures dependencies are resolved and configured automatically.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cross-Platform Builds
&lt;/h3&gt;

&lt;p&gt;Support for Windows, macOS, and Linux with seamless configuration of compiler toolchains.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cross-Compilation
&lt;/h3&gt;

&lt;p&gt;Easily target platforms like Android, iOS, Raspberry Pi, and WebAssembly with minimal extra configuration.&lt;/p&gt;

&lt;h3&gt;
  
  
  Workspaces
&lt;/h3&gt;

&lt;p&gt;Manage multiple interdependent projects within a single repository, with automatic inter-project dependency resolution.&lt;/p&gt;

&lt;h3&gt;
  
  
  IDE Integration
&lt;/h3&gt;

&lt;p&gt;Generate project files for VS Code, CLion, Xcode, and Visual Studio with a single command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cforge ide vs
cforge ide clion
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Testing &amp;amp; Diagnostics
&lt;/h3&gt;

&lt;p&gt;Built-in support for &lt;code&gt;cforge-test&lt;/code&gt; and enhanced compiler diagnostics to speed up debugging.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scripts &amp;amp; Hooks
&lt;/h3&gt;

&lt;p&gt;Define custom pre-build and post-build scripts to automate tasks at various stages of the build lifecycle.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;

&lt;p&gt;Clone and bootstrap from source:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/ChaseSunstrom/cforge.git
bash scripts/bootstrap.sh       &lt;span class="c"&gt;# Linux/macOS&lt;/span&gt;
.&lt;span class="se"&gt;\s&lt;/span&gt;cripts&lt;span class="se"&gt;\b&lt;/span&gt;ootstrap.ps1         &lt;span class="c"&gt;# Windows PowerShell&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Requires CMake ≥ 3.15 and a C/C++ compiler (GCC, Clang, or MSVC).&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Quick Start
&lt;/h3&gt;

&lt;p&gt;Initialize and build a new project in seconds:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cforge init
cforge build
cforge run
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates a &lt;code&gt;cforge.toml&lt;/code&gt;, &lt;code&gt;src/&lt;/code&gt;, &lt;code&gt;include/&lt;/code&gt;, and &lt;code&gt;build/&lt;/code&gt; directory for a “Hello, World!” application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Advanced Topics
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Workspaces
&lt;/h3&gt;

&lt;p&gt;Enable workspace mode in &lt;code&gt;cforge.workspace.toml&lt;/code&gt; to coordinate multiple related projects in one repository. Use workspace-level dependency overrides and shared build configurations to reduce duplication.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cross-Compilation
&lt;/h3&gt;

&lt;p&gt;Set the &lt;code&gt;[cross_compile]&lt;/code&gt; section in &lt;code&gt;cforge.toml&lt;/code&gt; to produce binaries for non-host targets (e.g., WebAssembly or embedded Linux).&lt;/p&gt;

&lt;h2&gt;
  
  
  Recent Releases &amp;amp; Roadmap
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;v2.0.0-beta (May 11, 2025)&lt;/strong&gt;: Engine rewrite from Rust to C/C++ for lower overhead and tighter toolchain integration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;v2.1.0-beta (May 16, 2025)&lt;/strong&gt;: Adds advanced Visual Studio solution generation and per-project workspace overrides.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upcoming v1.0.0&lt;/strong&gt;: Planned stable release with PCH optimizations, plugin system, and language server support.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Community &amp;amp; Contribution
&lt;/h2&gt;

&lt;p&gt;Join discussions on GitHub Discussions, file issues, and submit pull requests at the &lt;a href="https://github.com/ChaseSunstrom/cforge" rel="noopener noreferrer"&gt;CForge repository&lt;/a&gt;. Engage with fellow developers on Reddit at &lt;code&gt;r/cpp&lt;/code&gt;, &lt;code&gt;r/gamedev&lt;/code&gt;, and &lt;code&gt;r/Cplusplus&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;CForge offers a declarative, streamlined approach to C/C++ build management, combining the flexibility of TOML with the robustness of CMake and vcpkg. Whether crafting simple libraries or orchestrating complex workspaces, CForge accelerates development and reduces configuration overhead. Try it today and become part of the growing CForge community!&lt;/p&gt;

</description>
      <category>cforge</category>
      <category>cpp</category>
      <category>c</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
