From 63a66628f766a32349f6749d5985085ba199ae42 Mon Sep 17 00:00:00 2001 From: maj00r Date: Thu, 10 Sep 2026 17:11:54 +0200 Subject: [PATCH] let clang find the Windows SDK on its own The failing chain showed the same directory reached two ways - one spelling with doubled separators, one without - so #pragma once did not recognise the file and the SDK headers were parsed twice: every COM interface then looked like a uuid mismatch and BroadcastSystemMessageEx like a conflicting redeclaration. vcvars64 was putting the SDK in INCLUDE while clang was also locating it itself. Dropped the vcvars call; clang's own detection is enough, and one spelling means the include guards work. --- .github/workflows/build_bin.yml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build_bin.yml b/.github/workflows/build_bin.yml index 2ffd4257..c64539b5 100644 --- a/.github/workflows/build_bin.yml +++ b/.github/workflows/build_bin.yml @@ -82,12 +82,16 @@ jobs: call setup.bat # Ninja, not MSBuild: CMake's module dependency scanning is best supported - # there, and vcvars64 supplies the SDK and library paths clang needs. + # there. + # + # Deliberately not inside vcvars64. clang finds the MSVC toolchain and the + # Windows SDK by itself; letting vcvars also put them in INCLUDE gives the + # same directory two spellings, one of them with doubled separators, and + # #pragma once then fails to recognise the file - the SDK headers get + # parsed twice and every COM interface looks like a uuid mismatch. - name: Configure shell: cmd run: | - for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath`) do set VSPATH=%%i - call "%VSPATH%\VC\Auxiliary\Build\vcvars64.bat" for %%p in ("${{ steps.python.outputs.python-path }}") do set "PYROOT=%%~dpp" rem CMake writes these paths verbatim into its own .cmake files, where a rem backslash starts an escape: "C:\Program Files" would be read as \P. @@ -104,8 +108,6 @@ jobs: - name: Build shell: cmd run: | - for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath`) do set VSPATH=%%i - call "%VSPATH%\VC\Auxiliary\Build\vcvars64.bat" cmake --build build --parallel - name: Copy shaders