Trouble compiling gtk: "glib-mkenums: error: unrecognized arguments"

Are you using MSVC too?

I am using MSVC too, yes.

My response file is (this is for GDK):

--fhead "#include \"config.h\"
#include \"gdkenumtypes.h\"
#include \"gdk.h\"
#include \"gdkapplaunchcontext.h\"
#include \"gdkcairo.h\"
#include \"gdkcairocontext.h\"
#include \"gdkcicpparams.h\"
#include \"gdkclipboard.h\"
#include \"gdkcolorstate.h\"
#include \"gdkcontentdeserializer.h\"
#include \"gdkcontentformats.h\"
#include \"gdkcontentprovider.h\"
#include \"gdkcontentproviderimpl.h\"
#include \"gdkcontentserializer.h\"
#include \"gdkcursor.h\"
#include \"gdkdevice.h\"
#include \"gdkdevicepad.h\"
#include \"gdkdevicetool.h\"
#include \"gdkdisplay.h\"
#include \"gdkdisplaymanager.h\"
#include \"gdkdrag.h\"
#include \"gdkdmabufformats.h\"
#include \"gdkdmabuftexture.h\"
#include \"gdkdmabuftexturebuilder.h\"
#include \"gdkdragsurfacesize.h\"
#include \"gdkdrawcontext.h\"
#include \"gdkdrop.h\"
#include \"gdkenums.h\"
#include \"gdkevents.h\"
#include \"gdkframeclock.h\"
#include \"gdkframetimings.h\"
#include \"gdkglcontext.h\"
#include \"gdkgltexture.h\"
#include \"gdkgltexturebuilder.h\"
#include \"gdkkeys.h\"
#include \"gdkkeysyms.h\"
#include \"gdkmemorytexture.h\"
#include \"gdkmemorytexturebuilder.h\"
#include \"gdkmonitor.h\"
#include \"gdkpaintable.h\"
#include \"gdkpango.h\"
#include \"gdkrectangle.h\"
#include \"gdkrgba.h\"
#include \"gdkseat.h\"
#include \"gdksnapshot.h\"
#include \"gdktexture.h\"
#include \"gdktexturedownloader.h\"
#include \"gdktypes.h\"
#include \"gdkvulkancontext.h\"
#include \"gdksurface.h\"
#include \"gdkpopuplayout.h\"
#include \"gdkpopup.h\"
#include \"gdktoplevellayout.h\"
#include \"gdktoplevelsize.h\"
#include \"gdktoplevel.h\"
#include \"gdkdragsurface.h\"

#define C_ENUM(v) ((gint) v)
#define C_FLAGS(v) ((guint) v)
" --fprod "
/* enumerations from \"@basename@\" */
" --vhead "
GType
@enum_name@_get_type (void)
{
    static gsize gtype_id = 0;
    static const G@Type@Value values[] = {" --vprod "        { C_@TYPE@ (@VALUENAME@), \"@VALUENAME@\", \"@valuenick@\" }," --vtail "        { 0, NULL, NULL }
    };
    if (g_once_init_enter (&gtype_id)) {
        GType new_type = g_@type@_register_static (g_intern_static_string (\"@EnumName@\"), values);
        g_once_init_leave (&gtype_id, new_type);
    }
    return (GType) gtype_id;
}" C:/Users/bugaevc/source/gtk/build/../gdk/gdk.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkapplaunchcontext.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkcairo.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkcairocontext.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkcicpparams.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkclipboard.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkcolorstate.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkcontentdeserializer.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkcontentformats.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkcontentprovider.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkcontentproviderimpl.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkcontentserializer.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkcursor.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkdevice.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkdevicepad.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkdevicetool.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkdisplay.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkdisplaymanager.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkdrag.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkdmabufformats.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkdmabuftexture.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkdmabuftexturebuilder.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkdragsurfacesize.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkdrawcontext.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkdrop.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkenums.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkevents.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkframeclock.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkframetimings.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkglcontext.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkgltexture.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkgltexturebuilder.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkkeys.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkkeysyms.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkmemorytexture.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkmemorytexturebuilder.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkmonitor.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkpaintable.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkpango.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkrectangle.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkrgba.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkseat.h C:/Users/bugaevc/source/gtk/build/../gdk/gdksnapshot.h C:/Users/bugaevc/source/gtk/build/../gdk/gdktexture.h C:/Users/bugaevc/source/gtk/build/../gdk/gdktexturedownloader.h C:/Users/bugaevc/source/gtk/build/../gdk/gdktypes.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkvulkancontext.h C:/Users/bugaevc/source/gtk/build/../gdk/gdksurface.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkpopuplayout.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkpopup.h C:/Users/bugaevc/source/gtk/build/../gdk/gdktoplevellayout.h C:/Users/bugaevc/source/gtk/build/../gdk/gdktoplevelsize.h C:/Users/bugaevc/source/gtk/build/../gdk/gdktoplevel.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkdragsurface.h

And the error is:

glib-mkenums: error: unrecognized arguments: /* enumerations from \"@basename@\" */ " GType @enum_name@_get_type (void) { static gsize gtype_id = 0; static const G@Type@Value values[] = {" { C_@TYPE@ (@VALUENAME@), \"@VALUENAME@\", \"@valuenick@\" }," { 0, NULL, NULL } }; if (g_once_init_enter (&gtype_id)) { GType new_type = g_@type@_register_static (g_intern_static_string (\"@EnumName@\"), values); g_once_init_leave (&gtype_id, new_type); } return (GType) gtype_id; }" C:/Users/bugaevc/source/gtk/build/../gdk/gdk.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkapplaunchcontext.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkcairo.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkcairocontext.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkcicpparams.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkclipboard.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkcolorstate.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkcontentdeserializer.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkcontentformats.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkcontentprovider.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkcontentproviderimpl.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkcontentserializer.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkcursor.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkdevice.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkdevicepad.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkdevicetool.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkdisplay.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkdisplaymanager.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkdrag.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkdmabufformats.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkdmabuftexture.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkdmabuftexturebuilder.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkdragsurfacesize.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkdrawcontext.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkdrop.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkenums.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkevents.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkframeclock.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkframetimings.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkglcontext.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkgltexture.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkgltexturebuilder.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkkeys.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkkeysyms.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkmemorytexture.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkmemorytexturebuilder.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkmonitor.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkpaintable.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkpango.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkrectangle.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkrgba.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkseat.h C:/Users/bugaevc/source/gtk/build/../gdk/gdksnapshot.h C:/Users/bugaevc/source/gtk/build/../gdk/gdktexture.h C:/Users/bugaevc/source/gtk/build/../gdk/gdktexturedownloader.h C:/Users/bugaevc/source/gtk/build/../gdk/gdktypes.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkvulkancontext.h C:/Users/bugaevc/source/gtk/build/../gdk/gdksurface.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkpopuplayout.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkpopup.h C:/Users/bugaevc/source/gtk/build/../gdk/gdktoplevellayout.h C:/Users/bugaevc/source/gtk/build/../gdk/gdktoplevelsize.h C:/Users/bugaevc/source/gtk/build/../gdk/gdktoplevel.h C:/Users/bugaevc/source/gtk/build/../gdk/gdkdragsurface.h

Looking at what glib-mkenums does, it uses shlex.split() on the contents of the response file, which does correctly split & unescape the file into:

arg[0] = '--fhead'
arg[1] = '#include "config.h"\n#include "gdkenumtypes.h"\n#include "gdk.h"\n#include "gdkapplaunchcontext.h"\n#include "gdkcairo.h"\n#include "gdkcairocontext.h"\n#include "gdkcicpparams.h"\n#include "gdkclipboard.h"\n#include "gdkcolorstate.h"\n#include "gdkcontentdeserializer.h"\n#include "gdkcontentformats.h"\n#include "gdkcontentprovider.h"\n#include "gdkcontentproviderimpl.h"\n#include "gdkcontentserializer.h"\n#include "gdkcursor.h"\n#include "gdkdevice.h"\n#include "gdkdevicepad.h"\n#include "gdkdevicetool.h"\n#include "gdkdisplay.h"\n#include "gdkdisplaymanager.h"\n#include "gdkdrag.h"\n#include "gdkdmabufformats.h"\n#include "gdkdmabuftexture.h"\n#include "gdkdmabuftexturebuilder.h"\n#include "gdkdragsurfacesize.h"\n#include "gdkdrawcontext.h"\n#include "gdkdrop.h"\n#include "gdkenums.h"\n#include "gdkevents.h"\n#include "gdkframeclock.h"\n#include "gdkframetimings.h"\n#include "gdkglcontext.h"\n#include "gdkgltexture.h"\n#include "gdkgltexturebuilder.h"\n#include "gdkkeys.h"\n#include "gdkkeysyms.h"\n#include "gdkmemorytexture.h"\n#include "gdkmemorytexturebuilder.h"\n#include "gdkmonitor.h"\n#include "gdkpaintable.h"\n#include "gdkpango.h"\n#include "gdkrectangle.h"\n#include "gdkrgba.h"\n#include "gdkseat.h"\n#include "gdksnapshot.h"\n#include "gdktexture.h"\n#include "gdktexturedownloader.h"\n#include "gdktypes.h"\n#include "gdkvulkancontext.h"\n#include "gdksurface.h"\n#include "gdkpopuplayout.h"\n#include "gdkpopup.h"\n#include "gdktoplevellayout.h"\n#include "gdktoplevelsize.h"\n#include "gdktoplevel.h"\n#include "gdkdragsurface.h"\n\n#define C_ENUM(v) ((gint) v)\n#define C_FLAGS(v) ((guint) v)\n'
arg[2] = '--fprod'
arg[3] = '\n/* enumerations from "@basename@" */\n'
arg[4] = '--vhead'
arg[5] = '\nGType\n@enum_name@_get_type (void)\n{\n    static gsize gtype_id = 0;\n    static const G@Type@Value values[] = {'
arg[6] = '--vprod'
arg[7] = '        { C_@TYPE@ (@VALUENAME@), "@VALUENAME@", "@valuenick@" },'
arg[8] = '--vtail'
arg[9] = '        { 0, NULL, NULL }\n    };\n    if (g_once_init_enter (&gtype_id)) {\n        GType new_type = g_@type@_register_static (g_intern_static_string ("@EnumName@"), values);\n        g_once_init_leave (&gtype_id, new_type);\n    }\n    return (GType) gtype_id;\n}'
arg[10] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdk.h'
arg[11] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkapplaunchcontext.h'
arg[12] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkcairo.h'
arg[13] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkcairocontext.h'
arg[14] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkcicpparams.h'
arg[15] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkclipboard.h'
arg[16] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkcolorstate.h'
arg[17] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkcontentdeserializer.h'
arg[18] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkcontentformats.h'
arg[19] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkcontentprovider.h'
arg[20] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkcontentproviderimpl.h'
arg[21] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkcontentserializer.h'
arg[22] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkcursor.h'
arg[23] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkdevice.h'
arg[24] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkdevicepad.h'
arg[25] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkdevicetool.h'
arg[26] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkdisplay.h'
arg[27] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkdisplaymanager.h'
arg[28] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkdrag.h'
arg[29] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkdmabufformats.h'
arg[30] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkdmabuftexture.h'
arg[31] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkdmabuftexturebuilder.h'
arg[32] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkdragsurfacesize.h'
arg[33] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkdrawcontext.h'
arg[34] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkdrop.h'
arg[35] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkenums.h'
arg[36] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkevents.h'
arg[37] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkframeclock.h'
arg[38] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkframetimings.h'
arg[39] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkglcontext.h'
arg[40] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkgltexture.h'
arg[41] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkgltexturebuilder.h'
arg[42] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkkeys.h'
arg[43] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkkeysyms.h'
arg[44] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkmemorytexture.h'
arg[45] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkmemorytexturebuilder.h'
arg[46] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkmonitor.h'
arg[47] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkpaintable.h'
arg[48] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkpango.h'
arg[49] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkrectangle.h'
arg[50] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkrgba.h'
arg[51] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkseat.h'
arg[52] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdksnapshot.h'
arg[53] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdktexture.h'
arg[54] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdktexturedownloader.h'
arg[55] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdktypes.h'
arg[56] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkvulkancontext.h'
arg[57] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdksurface.h'
arg[58] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkpopuplayout.h'
arg[59] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkpopup.h'
arg[60] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdktoplevellayout.h'
arg[61] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdktoplevelsize.h'
arg[62] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdktoplevel.h'
arg[63] = 'C:/Users/bugaevc/source/gtk/build/../gdk/gdkdragsurface.h'

In the error message, there does not seem to be a line break before (or after) /* enumerations from "@basename@" */.

1 Like

It works if I replace "C:\Program Files\Meson\meson.exe" "runpython" with python3 in build.ninja.

1 Like

Thanks for figuring out the issue!

Should we push it to gtk?

That’s not a solution though (it’s a workaround), nor something that GTK can/should influence. It sounds like a bug in Meson and/or CPython. Perhaps Meson’s embedded copy of Python behaves differently when it comes to shlex.split(), or something.

1 Like

Sounds like a meson bug to me. I can do the research to report the issue, I’m a bit familiar with the codebase.

Reported it here: [Need help] Unrecognized arguments when using meson runpython in MSVC · Issue #15321 · mesonbuild/meson · GitHub

I get further in the compilation process now, but I’m getting undefined references for some reason:

hb-subset-cff-common.cc.obj : error LNK2001: simbolo esterno __imp_DeleteCriticalSection non risolto
hb-subset-cff1.cc.obj : error LNK2001: simbolo esterno __imp_DeleteCriticalSection non risolto
hb-subset-cff2.cc.obj : error LNK2001: simbolo esterno __imp_DeleteCriticalSection non risolto
hb-subset-plan.cc.obj : error LNK2001: simbolo esterno memcpy non risolto
hb-subset.cc.obj : error LNK2001: simbolo esterno memcpy non risolto
hb-static.cc.obj : error LNK2001: simbolo esterno memcpy non risolto
hb-subset-cff1.cc.obj : error LNK2001: simbolo esterno memcpy non risolto
hb-subset-cff2.cc.obj : error LNK2001: simbolo esterno memcpy non risolto

warning LNK4272: il tipo 'x86' del computer della libreria è in conflitto con il tipo 'x64' del computer di destinazione

Sounds like an issue with the environment setup. Do you use any of the command prompts in Start Menu > All > Visual Studio? Note that Developer Command Prompt For VS targets x86 (due to historical reasons). To build 64bit binaries you need the x64 Native Tools Command Prompt For VS.

For PowerShell the situation is quite the same. Developer PowerShell For VS targets x86. You can check that with the command echo $env:VSCMD_ARG_TGT_ARCH

Developer PowerShell for VS
-----------------------------------
PS> echo $env:VSCMD_ARG_TGT_ARCH
x86

Here’s how you can open a PowerShell session initialized for VS / x64 target:

  1. Open PowerShell (e.g Win+r, insert powershell and click OK)
  2. Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope Process
  3. & 'C:\Program Files\Microsoft Visual Studio\18\Community\Common7\Tools\Launch-VsDevShell.ps1' -Arch amd64 -HostArch amd64
  4. If asked, type A to allow execution of scripts signed by Microsoft
  5. Verify the target architecture with echo $env:VSCMD_ARG_TGT_ARCH

Final note: the path at point 3 is for VS2026. If you’re on VS2022, the command is & 'C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\Launch-VsDevShell.ps1' -Arch amd64 -HostArch amd64

Reference: Command-Line Shells & Prompt For Developers - Visual Studio (Windows) | Microsoft Learn

Gvsbuild can also help build GTK with MSVC: GitHub - wingtk/gvsbuild: GTK stack for Windows

1 Like

Thanks for the detailed steps!

Perhaps we should add this somewhere in the Windows build documentation so it doesn’t happen to other people?