Это мой минимальный воспроизводимый пример: 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 для компиляции.