MSVC Dependencies: Update [As of Feb 2026]

I have a successful vcpkg manifest file(s) setup, to at least pass the configure test, which includes custom ports for libsigcpp, glibmm, pango, pangomm, and cairomm. Ideally in the future I’d be able to make a port for building lrdf to support LADSPA plugins. But I thought I’d also categorize my thoughts, to perhaps help in considering what needs to be discussed.


  1. Where are the files to install the deps?

Currently I have 2 commits in a Github repo, if you have vcpkg installed you can clone this and run vcpkg install, and it should take a while for all the deps to get installed into a folder called vcpkg_installed.

If you have Visual Studio 18, you can see point #5.

(When testing to configure Ardour, you can add

--also-include=C:\path\to\vcpkg_installed\x64-windows\include --also-libdir=C:\path\to\vcpkg_installed\x64-windows\lib

at least for the release build. For debug build, add \debug before \lib.)

There’s also 5 caveats (at least for now):

  • You need to copy pkgconf.exe where it is located, and rename the copy to pkg-config.exe.
  • One must manually make aubio.pc. (Both for debug and release builds)

What I made (for Release):

prefix=${pcfiledir}/../..
includedir=${prefix}/include
libdir=${prefix}/lib

Name: aubio
Description: aubio library
Version: 0.4.9
Libs: "-L${libdir}" -laubio
Cflags: "-I${includedir}"

For debug, change the include dir line to includedir=${prefix}/…/include

  • jack2’s .pc file(s) need to be edited to be version 1.9.22 manually, instead of 1.9. This will make it pass the version check during configure. (For both release and debug)
  • The root wscript in the master branch of Ardour currently has conf.env['MSVC_VERSIONS'] = ['msvc 10.0', 'msvc 9.0', 'msvc 8.0', 'msvc 7.1', 'msvc 7.0', 'msvc 6.0', ]. That line needs to be deleted. (Regardless of release/debug build)
  • The same wscript also has conf.env.append_value('LIB', 'pthreadVC3'), but for debug there needs to be a d at the end. So that’ll have to become an if/else block. (This affects trying to build a Debug build of Ardour.)

There’s been some discussion over at IRC to have a separate repo for the msvc deps.

  1. The Dependencies: Are all collected?

With regards to configuration at least, all seem to be covered, except lrdf and CWiiD.

Regarding CWiiD, vcpkg does seem to offer a port of something called “wiiuse”, but I don’t know whether that’s better, or how hard it’ll be to switch from cwiid to that. It does call itself “cross platform”, but that’s about the extent of my knowledge on it.

Vcpkg’s portaudio has an “asio” feature, meaning pa_asio.h will be found, if installing from the above repo.

  1. The Dependencies: Sourcing/Creating the install script/files

For now, I’ve picked vcpkg. However, I believe that once Conan has recipes to build all dependencies (Excluding lrdf and cwiid for now), Conan would be more appropriate as it seems to be better suited for cross-platform uses of deps. So it could be a single source to get deps for Linux and MacOS as well.

For some perspective, Audacity has a conan-recipes repo.

  1. Will it build?

Once my pull requests get merged? No. At least 2-3 more source files need changes, and dependency-wise, I think some boost libs are missing, that the configure didn’t look for.

  1. Is “vcpkg install” the only way to install?

No. If you installed Visual Studio 18, you might have a directory such as

C:\Program Files\Microsoft Visual Studio\18\Community\VC\vcpkg

. I shall refer to this as vcpkg_path. If you use powershell, you can run . “vcpkg_path/vcpkg-init.ps1” , after which you can run vcpkg-shell install. A similar file exists ending with .cmd too, perhaps doing a similar thing on command prompt.

But the easiest way to install the deps is “vcpkg_path/vcpkg.exe” install.
(Quotes are needed because the path has spaces.)


  1. Regarding glibmm/giomm’s port in my repo

While it properly builds, the portfile is rather untidy. My other option for glibmm was to build with autotools, but that wasn’t properly supported. It’d probably be neater, and I tried to make it work, but it was to no avail. I might try again to make it work with autotools in March, but for now, it’ll use NMake.


Another side note: To be precise, the commands I ran to configure after installing the deps using vcpkg were as follows, while using Powershell:

$env:PATH = "C:\000Ardour\ardour\vcpkg_installed\x64-windows\tools\pkgconf;$env:PATH"
$env:PKG_CONFIG_PATH = "C:\000Ardour\ardour\vcpkg_installed\x64-windows\lib\pkgconfig"
python waf configure --prefix=C:/Ardour6 --configdir=share --ptformat --dist-target=msvc --cxx17 --optimize --also-include=C:\000Ardour\ardour\vcpkg_installed\x64-windows\include --also-libdir=C:\000Ardour\ardour\vcpkg_installed\x64-windows\lib

First command was to find pkg-config.exe, 2nd was to find the .pc files. Perhaps the paths in my command imply that I had these files in the root directory of ardour, and that is right. But I’ve realized (and been informed) external deps won’t be installed from the ardour repo itself.

Once my pull requests get merged, Developer Powershell will be needed, else an error will likely occur because dumpbin is needed.

Sadly I’ve got a slow internet connection here and it’s taken an hour to build just 18 packages out of 112 (in fact it’s spent nearly half an hour just building ffmpeg :frowning: )

If I stop the build and restart tomorrow, will it carry on from where it left off - or will it rebuild all the ones it’s already built?

1 Like

It will carry on from where you left off, but from the start of the package that was interrupted from being installed.

1 Like

Thanks Stephen - in fact I think the ffmpeg build might’ve crashed. My Command Prompt has been stuck saying Building ffmpeg for Debug for maybe 20 mins now and it’s not using any CPU so I’m pretty sure it’s crashed :confounded:

To my knowledge, building ffmpeg takes a while. Give it another hour. (Hopefully you didn’t interrupt and close your cmd prompt already…)

Also, which way did you run the command to install the deps? Did you have vcpkg (the repo) installed, or did you have a folder called vcpkg as stated in point #5 and use something from that?


For anyone wonder what ffmpeg has to do: It’s needed to build aubio. See this page, scroll down.

(Now I wonder if this is a feature thing that can be disabled…)

I have vcpkg installed in its own right here.

Ffmpeg is a bit strange. I aborted it using Ctrl+C and started another build but it didn’t build ffmpeg again (even though there are no ffmpeg libs or dll’s present). I can see a lib and dll named mpg123 - so maybe that’s what got built??

Having said all that, the build fails pretty soon after while building libffi with this message:-

error: building libffi:x64-windows failed with: BUILD_FAILED
See Troubleshoot build failures | Microsoft Learn for more information.
Elapsed time to handle libffi:x64-windows: 6.3 min
Please ensure you’re using the latest port files with git pull and vcpkg update.
Then check for known issues at:
GitHub · Where software is built
You can submit a new issue at:
Sign in to GitHub · GitHub

And if I start a new build, it fails at the same point. So I think that’s about as far as I can get :frowning:

That’s unfortunate…

My first suggestion would be to use the link that the error gives. (Or just click on the “Sign in to Github” hyperlink in your quote. That’s the link.) Then paste the file contents of what is asked in full, then submit the issue in vcpkg’s repo.

Secondly, edit testardourdeps/vcpkg-recipes/glibmm/vcpkg.json and remove the line saying libffi and see if libffi doesn’t build, and if so, if glibmm doesn’t build (when its turn comes).

[I’m slightly struggling to do #2 myself, because merely editing the vcpkg.json doesn’t rebuild the successfully built package that in this case is (at least) glibmm.)]


Thirdly, more of a reach. Not really expecting this to work. If you have any version(s) of CMake installed, uninstall all of them and install the latest version (4.2.3). Once installed, close and reopen cmd and try again.

Personally I don’t know how #3 could work, but the idea came to mind, and I suppose the effort to do this isn’t high.

Made an edit so that aubio doesn’t need ffmpeg.

(Also strangely, if I delete vcpkg_installed folder and rerun the command (or an equivalent of) vcpkg install, the files reappear without any installation process. Probably copying them from some cache somewhere.

I’ll test building with --no-binarycache tomorrow.)

One more thing occurred to me… should I be building here with Windows Powershell or with a normal Command Prompt?

Generally speaking I’ve built other vcpkg libs here using Powershell but when I tried that with your newer stuff it gave me an error (which I can’t remember now) so I’ve been building with a normal Command Prompt. Maybe I should switch back to Powershell tomorrow?

Last night I remembered that I’ve various appointments today and tomorrow so I got up early and tried to build libffi using my regular vcpkg here (i.e. via Powershell) which built it fine.

So, still with Powershell, I tried just building libffi from your repo and got the following error:-

warning: The vcpkg G:\Program Files\Microsoft Visual Studio\2022\Community\VC\vcpkg\vcpkg.exe is using detected vcpkg root G:\Program Files\Microsoft Visual Studio\2022\Community\VC\vcpkg and ignoring mismatched VCPKG_ROOT environment value D:\vcpkg-stuff\testardourdeps.
error: In manifest mode, vcpkg install does not support individual package arguments.
To install additional packages, edit vcpkg.json and then run vcpkg install without any package arguments.

So it’s looking like there might be a couple of issues with your build:-

  • Yours can’t build individual components - it’s “all or nothing”
  • Your build is having to use whichever version of ‘vcpkg’ the user happens to have installed (in my case, whichever version comes with VS2022)

The official ‘vcpkg’ supplies its own version, in the form of vcpkg.exe (which is in its root folder)

So you might need to supply a version of vcpkg.exe that matches the one you’re building with. Anyway, I won’t have much availability now until Wednesday so maybe give those things some thought.

[Edit…] Rather than trying to build ‘libffi’ individually I decided to run your command vcpkg install - but. even in Powershell, it gives me the same error as yesterday, about me needing to ensure I’m using the latest port files (i.e. git pull followed by vcpkg update). So is ‘libffi’ from your repo different from Microsoft’s official one (a slightly older version maybe??)

To my knowledge, that’s how vcpkg manifest works.

This is an interesting point to think about, but I’m unsure what can/should be done in this regard.

This gives me some hope for your errors. If you’re having some error relating to git pull, (in my opinion) you have an older version of vcpkg installed, and you need to go to wherever you had the vcpkg folder (not vcpkg_installed, vcpkg) and there run git pull, then retry installing.

(In my opinion) If you’re having an error telling git pull needs to be done, your copy of vcpkg is older than commit ac7af7424cbaf9057cb246b620f455303dccd6ed.

(see https://github.com/EZ4Stephen/testardourdeps/blob/main/vcpkg.json , line 34)


(Then again, if git pull doesn’t work, I don’t know what will…)

It’s a little complicated… If you have vcpkg installed, probably any terminal works. (I assume)
If you don’t have vcpkg installed (like me. I uninstalled it to test the vcpkg folder that comes with VS 2026), then you have many ways to do things…

It looks like you have such a folder. (See below quote) Guess VS 2022 has it too, then.

Note that if you don’t have vcpkg installed but have the vcpkg folder that comes with Visual Studio and use something from that, your terminal output will likely look something like this:

(Don’t know if this is the case when vcpkg is installed but you use something from the vcpkg folder that comes with VS)

Yes I remember the same text when building libboost and here’s my equivalent screenshot from VS2022’s folder. As you can see, my version of vcpkg is behind yours but only slightly. With any luck it might be the same version after the next update:-

No, not at all. With the official vcpkg it’s possible to do something like this:-

vcpkg install libffi:x64-windows

That would only build the 64-bit version of libffi. Ordinarily it would also build its dependencies of course - except that libffi doesn’t seem to have any.

I followed the above link and yes, my copy is identical to yours.

One more thing that might be relevant is that regular vcpkg contains a version of vcpkg.json that’s specific to libffi, whereas your repo doesn’t (so libffi will only get built as a dependency of something else). I’m not sure if that’ll cause any problem but I figured it might be worth flagging it up. FWIW the version of libffi getting built by regular vcpkg is version 3.5.2 (does that correspond the the version that gets built by your repo?)

Maybe another thing worth mentioning is that the official vcpkg contains a subdirectory called ports where literally every single build library seems to contain its own version of vcpkg.json - but your repo (at least up until now) contains almost none. What would help I guess is if some other MSVC developer could also attempt a build with your repo. But apart from you & me Stephen, I’m pretty sure MSVC devs are non-existent :frowning:

A quick question Stephen… does your repo include libintl (Microsoft’s repo seems to call it “gettext-libintl”)?

The reason I’m asking is that the last 2 libraries built here (before yours bombs out at libffi) were charset-1 and iconv-2 but Microsoft’s build builds those two and it then builds intl-8 just before building ffi-8

So it got me wondering if something’s expecting intl-8 but maybe it’s missing from your repo?

Not directly.
Names with a * next to their name means they’re built as dependencies for what I want to build. So likely it’s a dependency for one or more things.
image

I decided to copy the libffi package from Microsoft’s repo (here) to yours. The build still fails but I now see this message just before everything bombs out:-

CMake Error at scripts/cmake/vcpkg_fixup_pkgconfig.cmake:134 (message):

D:/vcpkg-stuff/testardourdeps/vcpkg_installed/x64-windows/tools/pkgconf/pkgconf.exe
–exists libffi failed with error code: 1

  ENV{PKG_CONFIG_PATH}: "D:\vcpkg-stuff\testardourdeps\vcpkg_installed\vcpkg\pkgs\libffi_x64-windows\lib\pkgconfig;D:\vcpkg-stuff\testardourdeps\vcpkg_installed\vcpkg\pkgs\libffi_x64-windows\share\pkgconfig;D:\vcpkg-stuff\testardourdeps\vcpkg_installed\x64-windows\lib\pkgconfig;D:\vcpkg-stuff\testardourdeps\vcpkg_installed\x64-windows\share\pkgconfig"
  output: Package libffi was not found in the pkg-config search path.

Perhaps you should add the directory containing `libffi.pc’

to the PKG_CONFIG_PATH environment variable

Package ‘libffi’ not found

What’s strange is that if I look in your folder called vcpkg_installed->x64-windows->bin (and also in the corresponding debug folder) the libffi modules are definitely there - so it did get built.

So I’ve no idea what CMake is failing :confounded:

Anyway, I’m out for the rest of today so I’ll try again tomorrow.

are the error message magic words here.

pkgconf.exe –exists libffi looks for the libffi.pc file in the PKG_CONFIG_PATH directories and any built-in paths it may have.
So you need to make sure all .pc files end up where pkgconf can find them

Thanks @peder. I’m still seeing the bailout here but that suggestion has maybe got me a bit closer. libffi.pc is in these 3 folders:-

  1. D:\vcpkg-stuff\testardourdeps\vcpkg_installed\vcpkg\pkgs\libffi_x64-windows\usr\local\lib\pkgconfig
  2. D:\vcpkg-stuff\testardourdeps\vcpkg_installed\vcpkg\blds\libffi\x64-windows-rel
  3. D:\vcpkg-stuff\testardourdeps\vcpkg_installed\vcpkg\blds\libffi\x64-windows-dbg

So I added #1 to PKG_CONFIG_PATH but it still gave me the crash. I think Powershell uses $env:PATH so next, I added it to that path which still gives me the same error but I also see this getting printed now:-

warning: The vcpkg G:\Program Files\Microsoft Visual Studio\2022\Community\VC\vcpkg\vcpkg.exe is using detected vcpkg root G:\Program Files\Microsoft Visual Studio\2022\Community\VC\vcpkg
and ignoring mismatched VCPKG_ROOT environment value D:\vcpkg-stuff\testardourdeps\vcpkg_installed\vcpkg\pkgs\libffi_x64-windows\usr\local\lib\pkgconfig
To suppress this message, unset the environment variable or use the --vcpkg-root command line switch.

What seems to be happening is that when libffi starts to get processed, all 3 of those libffi.pc files get deleted (and then get recreated during the build)

Hopefully this will give @EZ4Stephen some clue as to what’s happening.

I assume that’s how the build works, to avoid ending up with something malformed due to any remains of a previous build attempt of a package that had an error.

I’ve never checked this path before…

I… don’t have a “usr” folder there? Maybe there’s more differences in how you and I install the packages?

At this point I don’t have any… clear solution, given libffi is installed from vcpkg’s port and not mine. (Also you were talking about no “port” folder in mine: That’s because I named mine vcpkg-recipes. The vcpkg-configuration.json is used to find where the port folder is.)

My only remaining advice I can think of, but still have my doubts on their effectiveness to the current problem, (repeating one or more things I’ve said) is to

  1. Uninstall any installed version of CMake and get the latest version
  2. Install Visual Studio 2026 if not already done so, and use its vcpkg folder’s vcpkg.exe to run the install.
  3. run the following before running vcpkg install (if on powershell, I’m unsure of the cmd equivalent) : $env:PKG_CONFIG_PATH = "D:\vcpkg-stuff\testardourdeps\vcpkg_installed\x64-windows\lib\pkgconfig"

This warning seems to be just informing of multiple vcpkg_root being found/used, I don’t think it changes anything.

What do the error logs themselves say though?


For now I don’t think much can be done if libffi doesn’t build…

I haven’t found the error logs yet but I’m inclined to agree that this isn’t do-able at the moment. In the meantime I found this post from a user at the Microsoft Developer forum. If I’m reading it correctly, it seems to be suggesting what we’re seeing except in reverse - i.e. a vcpkg repo created for VS2022 might not build with VS2026’s version of vcpkg.

Having said that, there’s a distinct possibility that I’m just seeing what I want to see!! So if you can find some time later, can you take a look at it and see if you interpret it the same?