尝试在these instructions之后在Windows上使用MSYS2从git源构建稳定的GTK3 3.24.21版本。我已经从tar.xz源代码和MSYS2 configure/make
成功地构建了这个版本,所以我知道我具有所有必需的依赖项。
克隆gtk存储库后,我签出所需的版本。然后按照说明运行meson
。
git checkout -b issue1234 3.24.21
meson setup --prefix /opt/gtk3 _build
由于某些原因,meson
无法找到pkg-config
或cmake
两者,它们都存在于PATH中。它还认为,尽管存在足够的版本,但仍需要构建glib2
的最新版本。当meson
尝试构建glib2
时,它会爆炸:
subprojects/glib/meson.build:1680:2: ERROR: Entry _WIN32_WINNT not in configuration data.
_WIN32_WINNT
可能是在以下glib/meson.build
块中设置的(这是文件中唯一被设置的位置):
# Windows SDK requirements and checks
if host_system == 'windows'
# Check whether we're building for UWP apps
code = '''
#include <windows.h>
#if !(WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP))
#error "Not building for UWP"
#endif'''
if cc.compiles(code, name : 'building for UWP')
glib_conf.set('G_WINAPI_ONLY_APP', true)
# We require Windows 10+ on WinRT
glib_conf.set('_WIN32_WINNT', '0x0A00')
else
# We require Windows 7+ on Win32
**glib_conf.set('_WIN32_WINNT', '0x0601')**
endif
endif
glib/meson.build
中该块的最后一行是炸弹所在的地方:
if has_syspoll and has_systypes
poll_includes = '''
#include<sys/poll.h>
#include<sys/types.h>'''
elif has_winsock2
poll_includes = '''
#define _WIN32_WINNT @0@
#include <winsock2.h>'''.format(glib_conf.get('_WIN32_WINNT'))
关于发生了什么的任何想法?为什么找不到pkg-config/cmake
?为什么需要构建glib2
?以及为什么构建失败?