Re: Build system for Windows

Branko Čibej <[email protected]> Sat, 9 May 2026 23:46:28 +0200
Newsgroups gmane.comp.apache.apr.devel
Organization The Apache Software Foundation
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------0VcayrwNzUpk0HAZ08MzOf3n
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 9. 5. 26 23:22, Ivan Zhakov wrote:
> Hi,
>
> Currently apr-trunk has three different ways to build on Windows.
>
> 1. Visual C++ 6.0 (.dsw/.dsp)
>
> 2. NMake (apr.mak/libapr.mak). Generated during tarbal creation.
>
> 3. CMake (CMakeLists.txt)
>
> I suggest to make CMake the only build system for Windows and remove 
> support for everything else (Visual C++ 6.0 and NMake):
> * CMake just works.
>
> * Modern Visual Studio has native support for building CMake projects.
>
> * Visual Studio doesn't have native support for NMake.
>
> * vcpkg has native support for CMake
>
> * Visual C++ 6.0 is really old
>
> * NMake files doesn't support discovery of externals components.
>
> * NMake is only available in tarball and cannot be used for development

+0.983

If we were starting from scratch, I'd suggest using meson + ninja on all 
platforms. But we're not, and we have oodles of engineer-years invested 
in the autotools build -- not to mention many, many downstream users who 
depend on that.

 From that perspective, going from "maintaining" 4(3) build systems to 
only 2(1) seems like a good move. The only question I don't know the 
answer to is how many downstream users use APR on some bespoke embedded 
systems that can't handle CMake, hence the −0.17.

-- Brane
--------------0VcayrwNzUpk0HAZ08MzOf3n
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <div class="moz-cite-prefix">On 9. 5. 26 23:22, Ivan Zhakov wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CAPZho0-1nqndQm+9bR8cqwTAGZCHzmtB_sRWdNTTJvfUpdYchw@mail.gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <div dir="ltr">
        <div>Hi,</div>
        <div><br>
        </div>
        <div>Currently apr-trunk has three different ways to build on
          Windows.</div>
        <div><br>
        </div>
        <div>1. Visual C++ 6.0 (.dsw/.dsp)</div>
        <div><br>
        </div>
        <div>2. NMake (apr.mak/libapr.mak). Generated during tarbal
          creation.</div>
        <div><br>
        </div>
        <div>3. CMake (CMakeLists.txt)</div>
        <div><br>
        </div>
        <div>I suggest to make CMake the only build system for Windows
          and remove support for everything else (Visual C++ 6.0 and
          NMake):</div>
        <div>* CMake just works.</div>
        <div><br>
        </div>
        <div>* Modern Visual Studio has native support for building
          CMake projects.</div>
        <div><br>
        </div>
        <div>
          * Visual Studio doesn't have native support for NMake. </div>
        <div><br>
        </div>
        <div>* vcpkg has native support for CMake</div>
        <div><br>
        </div>
        <div>* Visual C++ 6.0 is really old </div>
        <div><br>
        </div>
        <div>* NMake files doesn't support discovery of externals
          components.</div>
        <div><br>
        </div>
        <div>* NMake is only available in tarball and cannot be used for
          development</div>
      </div>
    </blockquote>
    <br>
    +0.983<br>
    <br>
    If we were starting from scratch, I'd suggest using meson + ninja on
    all platforms. But we're not, and we have oodles of engineer-years
    invested in the autotools build -- not to mention many, many
    downstream users who depend on that.<br>
    <br>
    From that perspective, going from "maintaining" 4(3) build systems
    to only 2(1) seems like a good move. The only question I don't know
    the answer to is how many downstream users use APR on some bespoke
    embedded systems that can't handle CMake, hence the −0.17.<br>
    <br>
    -- Brane
  </body>
</html>

--------------0VcayrwNzUpk0HAZ08MzOf3n--