Как генерировать файлы GIR из компилятора Vala?

Я пытаюсь создать привязку Python к vala библиотеке с помощью pygi с gobject самоанализом. Однако я испытываю затруднения при генерации файлов GIR (что я планирую скомпилировать в typelib файлы впоследствии). Согласно документации valac должен поддерживать генерацию файлы GIR.

Компиляция следующего

helloworld.vala

public struct Point {
    public double x;
    public double y;
}

public class Person {

    public int age = 32;

    public Person(int age) {
        this.age = age;
    }

}

public int main() {

    var p = Point() { x=0.0, y=0.1 }; 
    stdout.printf("%f %f\n", p.x, p.y);

    var per = new Person(22);
    stdout.printf("%d\n", per.age);

    return 0;

}

с командой

valac helloworld.vala --gir=Hello-1.0.gir

не создает Hello-1.0.gir файл, поскольку можно было бы ожидать. Как я могу генерировать gir файл?

7
задан dzhelil 13 June 2010 в 00:06
поделиться

1 ответ

Чтобы сгенерировать GIR, нужно поместить экспортируемые функции в одно и то же пространство имен

hello.vala

namespace Hello {
    public struct Point {
        public double x;
        public double y;
    }

    public class Person {

        public int age = 32;

        public Person(int age) {
            this.age = age;
        }
    }
}

public int main() {

    var p = Hello.Point() { x=0.0, y=0.1 }; 
    stdout.printf("%f %f\n", p.x, p.y);

    var per = new Hello.Person(22);
    stdout.printf("%d\n", per.age);

    return 0;

}

, а затем выполнить следующую команду.

valac hello.vala --gir=Hello-1.0.gir --library Hello-1.0

Это создаст файл gir и vapi в текущем каталоге.

Затем, чтобы сгенерировать файл библиотеки типов, нужно запустить

g-ir-compiler --shared-library=hello Hello-1.0.gir -o Hello-1.0.typelib

, предполагая, что разделяемая библиотека была скомпилирована в libhello.so

11
ответ дан 6 December 2019 в 23:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: