windows-2019 will be fully retired by the end of June, and 2025 is the latest version.
This means that Windows build artifacts will be built using MSVC 2022, not MSVC 2019. They should be ABI-compatible across this change, since they expose no third-party types and Microsoft say that their compiler and standard library didn't break ABI between 2019 and 2022, but a newer version of the redistributable might be needed.
It didn't work because it didn't have the right target directories listed, but even with the right directories it wouldn't work because they get wiped by CMake when it starts building.
UV's use of a lockfile makes building the docs more reliable, and it installs the dependencies faster too (though in CI that's largely hidden by having to install Doxygen every time).
It doesn't have any effect with the 7Z generator that's used on Windows, but I've added it for Windows anyway in case that changes in a future version of CMake.
This is a little awkward because libloot only needs Boost's headers, but it doesn't supply a CMake config unless it's built, so we build the system stub to make that happen as quickly as possible.
The ubuntu-20.04 runner is due to be deprecated on 2025-02-01 and
unsupported by 2025-04-01.
The ubuntu-24.04 runner does not include cbindgen, so it's now installed
using apt.
GCC 10 doesn't support the newer libtbb that is in Ubuntu 24.04's apt
repositories, so update to GCC 13.
The behaviour of std::filesystem::equivalent changed at some point
between GCC 10 and GCC 13, so the tests have been updated to reflect
that.
Run the build to prove it works, but don't publish the archive because LOOT no longer needs it, and it's not very portable to other Linux distributions or versions of Ubuntu, and people might try to use it instead of building from source.
This is so that LOOT can be packaged as a Flatpack package that uses the
KDE runtime's ICU libraries, which are v71.1, and so avoid bundling
a different version.