Есть ли способ использовать libgit2-glib на Vala? - PullRequest
1 голос
/ 18 февраля 2020

Это мой минимальный воспроизводимый пример: Test.vala

using Ggit;

class Test : GLib.Object {

    public static int main(string[] args) {
        File repositoryFile = File.new_for_path("./");
        Repository repository = Repository.open(repositoryFile);
        return 0;
    }
}

Если я скомпилирую программу с valac --pkg libgit2-glib-1.0 Test.vala, я получу:

error: Package `libgit2-glib-1.0' not found in specified Vala API directories or GObject-Introspection GIR directories

Если Вместо этого я использую valac --pkg ggit-1.0 Test.vala Я получаю

fatal error: libgit2-glib/ggit.h: No such file or directory
#include <libgit2-glib/ggit.h>
^~~~~~~~~~~~~~~~~~~~~
compilation terminated.
error: cc exited with status 256

Обе libgit2-glib-1.0-0 и libgit2-glib-1.0-dev установлены и расположение файла, в котором говорится, что он отсутствует: /usr/include/libgit2-glib-1.0/libgit2-glib/ggit.h

Если я использую

valac --pkg ggit-1.0 --Xcc="-I/usr/include/libgit2-glib-1.0 `pkg-config --cflags --libs libgit2-glib-1.0`" Test.vala 

, я получаю ту же ошибку, что и выше.

Принимая во внимание, что если я использую valac --pkg ggit-1.0 --Xcc="-I/usr/include/libgit2-glib-1.0" Test.vala, он может правильно найти заголовки, но потом жалуется, что не может связать его:

/tmp/ccSjHLvX.o: In function `test_main':
Test.vala.c:(.text+0x8d): undefined reference to `ggit_repository_open'
collect2: error: ld returned 1 exit status
error: cc exited with status 256

Есть ли способ использовать libgit2-glib на vala?

Edit :

Если я это сделаю:

valac --pkg ggit-1.0 Test.vala -C
gcc Test.c -o Test `pkg-config --cflags --libs libgit2-glib-1.0`

Хорошо компилируется. Но мне интересно, возможно ли сделать это одной командой с vala c вместо необходимости вызывать vala c для генерации источников и затем вручную вызывать g cc для компиляции.

...