在Windows上使用介子和MSYS2构建GTK3失败

时间:2020-08-16 04:56:54

标签: windows gtk msys2 meson-build

尝试在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-configcmake两者,它们都存在于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?以及为什么构建失败?

0 个答案:

没有答案