I believed it’s a good idea for me to make a separate thread on building with MSVC, so here it is. I ran the following commands on PowerShell without admin, but you can do otherwise.
I’ve skipped over the installation of MSVC and having to restart.
mkdir C:\dev
cd C:\dev
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
.\bootstrap-vcpkg.bat -disableMetrics
.\vcpkg install boost-headers pkgconf glib glibmm libsndfile[core] curl libarchive[core] liblo taglib vamp-sdk rubberband fftw3 aubio libpng pango libsigcpp cairomm pangomm libxml2 serd sord sratom lilv libusb jack2 lv2 libwebsockets boost-ptr-container boost-uuid
Notes:
- The above command took 2.4 hours to finish, for me. The vcpkg folder ended taking 12.9 GB.
- libusb isn’t mandatory in configuring, but when I built using msys2, there was an error which was fixed by installing libusb and then reconfiguring and building, but that reset the build progress.
- jack2, and libwebsockets aren’t mandatory either. you can drop their names from the above command.
- If you want jack2, do the following:
(gc C:\dev\vcpkg\installed\x64-windows\lib\pkgconfig\jack.pc) -replace 'Version: 1.9$','Version: 1.9.22' | sc C:\dev\vcpkg\installed\x64-windows\lib\pkgconfig\jack.pc - If you want libwebsockets, do the following, else the configure won’t find it:
@'
prefix=${pcfiledir}/../..
libdir=${prefix}/lib
includedir=${prefix}/include
Name: libwebsockets
Description: Provides fast throughput in both directions as client or server.
Version: 4.4.1
Libs: "-L${libdir}" -lwebsockets
Cflags: "-I${includedir}"
'@ | Set-Content -NoNewline -Encoding UTF8 "$env:PKG_CONFIG_PATH\libwebsockets.pc"
- I’m uncertain about boost-ptr-container and boost-uuid, but I’m not removing it (yet)
A few more commands to run, before dealing with Ardour’s files:
sc C:\dev\vcpkg\installed\x64-windows\tools\pkgconf\pkg-config.bat '@"%~dp0pkgconf.exe" %*'
@'
prefix=${pcfiledir}/../..
libdir=${prefix}/lib
includedir=${prefix}/include
Name: aubio
Description: aubio library
Version: 0.4.9
Libs: "-L${libdir}" -laubio
Cflags: "-I${includedir}"
'@ | Set-Content -NoNewline -Encoding UTF8 "$env:PKG_CONFIG_PATH\aubio.pc"
Now, to download Ardour.
cd C:\dev
git clone https://github.com/Ardour/ardour.git
$env:PATH = "C:\dev\vcpkg\installed\x64-windows\tools\pkgconf;$env:PATH"
$env:PKG_CONFIG_PATH = "C:\dev\vcpkg\installed\x64-windows\lib\pkgconfig"
$env:AS = "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\bin\Hostx64\x64\ml64.exe"
(gc wscript)-replace"MSVC_VERSIONS.*","MSVC_VERSIONS'] = ['msvc 17.14']" -replace"glibmm-2\.4","glibmm-2.68" -replace"giomm-2\.4","giomm-2.68"|sc wscript
(gc libs/tk/ztkmm/wscript) -replace"sigc\+\+-2\.0","sigc++-3.0" |sc libs/tk/ztkmm/wscript
(gc libs/tk/ydkmm/wscript) -replace 'cairomm-1\.0','cairomm-1.16' -replace 'pangomm-1\.4','pangomm-2.48'| sc libs/tk/ydkmm/wscript
The purpose of $env:AS... is to get past the check for gas/gcc. The path will likely be different for you.
This will be enough to pass the configuration. But as you’ll see later, some files will need editing, and usually when a wscript changes, I have to run configure again. Also if you close and reopen powershell, and have to run configure, you’ll need to run those 3 $env:... commands again.
python waf configure --prefix=C:/Ardour2 --configdir=share --optimize --ptformat --dist-target=msvc --also-include=C:\dev\vcpkg\installed\x64-windows\include --also-libdir=C:\dev\vcpkg\installed\x64-windows\lib --cxx17
Now getting to the build, with errors… Well, they’re there. I feel like logging every error is hard, so instead I’mma share git diffs that I’m confident about.
Git diffs as of 30th October: 2681 lines libs.diff as of 30 Oct 2025 - Pastebin.com
For my latest set of errors: WARNING: MSVC does not allow symbols to be visible/exported by default while building clearlooks-... (might be outdated, sorry)

