gtk - 需要帮助将 Make 文件转换为 Vala 的 Meson 构建文件

标签 gtk webkit gtk3 vala meson-build

我正在 Vala 开发一个应用程序。我需要在一个项目中同时使用 webkit2gtk-web-extension-4.0webkit2gtk-4.0

我正在遵循以下示例 - https://github.com/rschroll/webkitdom/tree/extension

示例中的 Make 文件如下:

PKGS=--pkg gtk+-3.0 --pkg libsoup-2.4
EXEC=dom-test
SOURCES=dom-test.vala custom-web-view.vala
LIB_BASE=dom-server
LIB_SOURCES=$(LIB_BASE).vala
LIBRARY=$(LIB_BASE).so

# If you have webkit2gtk-4.0 installed, you will need a Vala from git
# version 6a1a1ab1 (2014/10/16) or later, in order to have the fixed
# .vapi files.
#WEBKIT_VAPI=--pkg webkit2gtk-4.0
#WEBKIT_EXT_VAPI=--pkg webkit2gtk-web-extension-4.0
# Otherwise, use the -3.0 versions included here
WEBKIT_VAPI=--vapidir=. --pkg webkit2gtk-3.0
WEBKIT_EXT_VAPI=--vapidir=. --pkg webkit2gtk-web-extension-3.0 -X -I/usr/include/webkitgtk-3.0

all: $(EXEC) $(LIBRARY)

$(EXEC): $(SOURCES)
    valac $(WEBKIT_VAPI) $(PKGS) $^

$(LIBRARY): $(LIB_SOURCES)
    valac $(WEBKIT_EXT_VAPI) $(PKGS) --library=$(LIB_BASE) -X -fPIC -X -shared -o $@ $^

clean:
    rm $(EXEC) $(LIBRARY)

使用 Meson Build 系统,我尝试使用共享库创建一个子项目,并在主项目中链接共享库。但我收到错误

DOMServer.vala:1.1-1.10: error: The root namespace already contains a definition for `WebKit'

主工程meson.build文件如下:

project('com.linappfoundry.athmanam', ['c', 'vala'])

domserver_proj = subproject('DOMServer')
domserver_lib = domserver_proj.get_variable('domserver_lib')

cc = meson.get_compiler('c')
m_dep = cc.find_library('m', required : false)

executable(
    meson.project_name(),
    'AthmanamApp.vala',
    'Widgets/MainWindow.vala',
    'Widgets/PoemParserWebView.vala',
    dependencies: [
        dependency('gtk+-3.0'),
        dependency('glib-2.0'),
        dependency('libsoup-2.4'),
    dependency('webkit2gtk-4.0'),
        dependency('json-glib-1.0'),
        dependency('libxml-2.0'),
        m_dep
    ],
    link_with: [domserver_lib],
    install: true
)

子项目的meson.build文件如下:

project('com.linappfoundry.athmanam.DOMServer', ['c', 'vala'])

domserver_lib = shared_library(
    'com.linappfoundry.athmanam.DOMServer',
    'src/DOMServer.vala',
    dependencies: [
        dependency('glib-2.0'),
        dependency('gtk+-3.0'),
        dependency('libsoup-2.4'),
        dependency('webkit2gtk-web-extension-4.0')
    ],
    install: true
)

我不确定我在这里做错了什么,因为我对 Vala 和 Meson 都是新手。

最佳答案

错误

DOMServer.vala:1.1-1.10: error: The root namespace already contains a definition for `WebKit'

来自 Vala 编译器,表示全局命名空间中已经存在 Webkit 的定义。该错误可能很简单,就像使用大小写错误的关键字一样,例如使用 Webkit; 当它应该使用 Webkit; 时。

Webkit 被定义为全局(根)命名空间中的命名空间,并在 VAPI 文件中完成。尝试找出它在哪里被重新定义为其他东西。

关于gtk - 需要帮助将 Make 文件转换为 Vala 的 Meson 构建文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59563623/

相关文章:

javascript - 防止 WebSQL 数据库中的 SQL 注入(inject)? (如何处理数据中的引号?)

python - Gtk3 上带有 PyGObject 的 Webkit 线程

gtk - 确定可见 Gtk.FlowBox 子项的数量

gtk - 将本地路径与 WebView (Webkit) 一起使用

css - 一个按钮的 GTK+ CSS

python - 将变量传递给对话框

css - 将鼠标悬停在其上时如何更改-webkit-scrollbar宽度

javascript - 为什么 document.activeElement.matches (':focus' ) 返回 false?

c - 如何在 gtk3 中获得事件的 gtk 窗口?

c# - 是否会按照严格的时间顺序调用 GTK+ 超时回调?