How can I import other files in Vala?

import, vala

Solution

You don't do it directly. If you run `valac file1.vala file2.vala`, it is as if you compiled them in one big file.

If you want to make them reusable, then you probably want a shared library. In which case, you compile one to produce a C header file and a VAPI definition:

valac --vapi file1.vapi -H file1.h --library libfile1.so file1.vala

The second one can then consume this:

valac --pkg file1 file2.vala

This assume that the VAPI file has been installed. If this is not the case, you'll need to pass `--vapidir` and the location where `file1.vapi` exists, probably `.`. Similarly, you'll need to inform the C compiler about where `file1.h` lives with `-X -I/directory/containing`, again, probably `-X -I.`. Finally, you'll need to tell the C linker where `libfile1.so` is via `-X -L/directory/containing -X -lfile1`. This is a little platform specific, and you can smooth the difference out using AutoMake, though this is a bit more involved. Ragel is the usual go-to project for how to use AutoMake with Vala.

Problem

The question pretty much says it all- how could I import `file2.vala` to `file1.vala`?

Original source