Нужна помощь в переводе файла Make File в файл сборки Meson для Vala

Я работаю над приложением на Вале. Мне нужно использовать как webkit2gtk-web-extension-4.0, так и webkit2gtk-4.0 в одном проекте.

Я следую примеру - https://github.com/rschroll/webkitdom/tree/extension

Файл Make File из примера выглядит следующим образом:

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.


person Manikk    schedule 02.01.2020    source источник


Ответы (1)


Ошибка

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

от компилятора Vala и говорит, что уже есть определение Webkit в глобальном пространстве имен. Ошибка может быть такой же простой, как использование ключевого слова в неправильном регистре, например Using Webkit;, когда должно быть using Webkit;.

Webkit определяется как пространство имен в глобальном (корневом) пространстве имен, и это делается в файле VAPI. Попытайтесь найти, где это переопределяется как что-то другое.

person AlThomas    schedule 03.01.2020
comment
Я дважды проверил. Мы не можем использовать webkit2gtk-web-extension-4.0 и webkit2gtk-4.0 в одном проекте. Итак, мне нужно создать часть кода, которая включает webkit2gtk-web-extension-4.0 в качестве разделяемой библиотеки. Общая библиотека строится нормально, отдельно. Но я хочу использовать его как подпроект. Не знаю, возможно ли это с мезоном. - person Manikk; 07.01.2020