<?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: riceliker</title>
    <description>The latest articles on DEV Community by riceliker (@riceliker).</description>
    <link>https://dev.to/riceliker</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4030633%2F630ea82d-cd39-41ed-9d02-2695a31a48c8.jpg</url>
      <title>DEV Community: riceliker</title>
      <link>https://dev.to/riceliker</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/riceliker"/>
    <language>en</language>
    <item>
      <title>PWMake -A C++ build system</title>
      <dc:creator>riceliker</dc:creator>
      <pubDate>Mon, 10 Aug 2026 00:32:43 +0000</pubDate>
      <link>https://dev.to/riceliker/pwmake-a-c-build-system-34be</link>
      <guid>https://dev.to/riceliker/pwmake-a-c-build-system-34be</guid>
      <description>&lt;p&gt;Visit the code: &lt;a href="https://github.com/riceliker/PWMake" rel="noopener noreferrer"&gt;github&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I hate CMake when I learned to write my first C++ program. I hate Visual Studio and Xcode too. So I decided to use clang and CMake to build my C++ program. Clang is a good compiler, but CMake is terrible.  &lt;/p&gt;

&lt;p&gt;I found ninja when I searched new C++ build system. Ninja is a fast build system, but we should add every file by myself. So I decided to  create a new language to transform the ninja file.  &lt;/p&gt;

&lt;p&gt;The first thing is define the group. The group likes a struct, you should add function in the group. The group will help you to manager the function. Writing function anywhere is not a good idea.  &lt;/p&gt;

&lt;p&gt;I decide to join Compiler Group, Files Group and Project Group firstly. Compiler Group will create the compiler infomation.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$string($compiler_path, "/bin/clang++")
@compiler(compiler_path)
  language_version("c++23")
  standard_library("libc++")
  compiler_debug()
;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Files Group will search file in the program folder.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@files("source")
  recursion_folder("src", ".cpp")
;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Project Group will add all Files Group and Library.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@project("pwmake", "binary")
  source_files("source")
;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;binary&lt;/code&gt; mean build a binary execute file. It also support &lt;code&gt;static&lt;/code&gt;(static library) and &lt;code&gt;shared&lt;/code&gt;(dynamic library).  &lt;/p&gt;

&lt;p&gt;See other detail in the PWMake Documnet.  &lt;/p&gt;

&lt;p&gt;It's the first version about PWMake. Maybe It lost so many function and have so many bug. Looking forward to next stable version.If you have new idea or bug, make a issue in github.If you want to pull request, welcome to pull it.  &lt;/p&gt;

&lt;p&gt;Enjoy.  &lt;/p&gt;

</description>
      <category>cpp</category>
      <category>github</category>
      <category>opensource</category>
      <category>softwaredevelopment</category>
    </item>
  </channel>
</rss>
