我正在 Vala 开发一个应用程序。我需要在一个项目中同时使用 webkit2gtk-web-extension-4.0 和 webkit2gtk-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/