На данный момент мое приложение полностью написано на C, но я хотел бы начать добавлять объекты в Vala для использования в различных файлах C. Я знаю, что могу сгенерировать файлы .c / .h с помощью valac и включить их, но было бы предпочтительнее включить их в мою настройку automake в качестве исходного файла.
В противном случае просто напишите файл vapi для любого из файлов .c / .h и добавьте его как --pkg. К сожалению, это не так тривиально для того способа, который я хочу использовать.
Тем не менее, соответствующие дополнения.
configure.ac:
AM_PROG_VALAC([0.12.0])
dnl Only adding these to test the package include in vala
OFS_PACKAGES="--pkg gee-1.0"
AC_SUBST(OFS_PACKAGES)
Makefile.am:
VALAFLAGS = \
@OFS_PACKAGES@
src_ofs_SOURCES = \
src/main.c \
src/test.vala
src / main.c
#include "test.h"
...
FooTest *object = foo_test_new ();
src / test.vala:
using Gee;
namespace Foo {
public class Test : Object {
public Test () {
stdout.printf ("Test construction\n");
}
}
}
Когда я запускаю make, я получаю сообщение об ошибке
src/main.c:10:18: fatal error: test.h: No such file or directory
что неудивительно, учитывая, что вызов valac не произошел до вызова gcc. Итак, вопрос в том, действительно ли существует способ указать automake / make, чтобы сначала запустился valac, чтобы сгенерировать необходимые файлы для включения?
UPD:
Заставить его работать удалось с помощью следующих изменений:
Makefile.am:
VALAFLAGS = \
-H ofs.h -C -c
@OFS_PACKAGES@
src_ofs_SOURCES = \
src/test.vala \
src/main.c