windows - 在 Windows 上使用介子和 MSYS2 构建 GTK3 失败
问题描述
尝试按照这些说明在 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
无法找到PATH 中存在的一个pkg-config
或。cmake
它还认为,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
?为什么构建失败?
解决方案
推荐阅读
- java - “SSLHandshakeException:没有共同的密码套件”
- python - 如何在动态更改文本上使用“grep”?
- javascript - 将 EventListener 应用于表格而不是每个单元格。如何?
- angular - Angular 5:在后面检查来自 Django API 的新消息
- python - 我的 bmi 计算器正在向后运行
- iphone - Swift - 如何通过控制中心判断 Torch 是否开启
- google-apps-script - 如果特定单元格已更改为特定值,则保护/取消保护范围
- java - 使用@EJB 注入@Stateless Bean 或直接使用@inject 的优势
- javascript - 如何使用 JavaScript 在 iframe 中插入图片?
- python - 如何使用步进函数在我的亚马逊 ec2 机器上一个接一个地运行 3 个 python 脚本?