Config file

Иногда может понадобится чтобы некоторые константы подставлялись в код перед компиляцией.

Это пример такого поведения:

prog.vala

class MainProg : GLib.Object {

    public static int main(string[] args) {
        stdout.printf("DATA_DIRECTORY is: %s.\n", DATA_DIRECTORY);
        stdout.printf("SOMETHING_ELSE is: %s.\n", SOMETHING_ELSE);
        return 0;
    }
}

meson build

project('valatest', 'vala', 'c')

valac = meson.get_compiler('vala')
# Try to find our library
valadeps = [valac.find_library('meson-something-else', dirs : meson.current_source_dir())]
valadeps += [dependency('glib-2.0'), dependency('gobject-2.0')]

e = executable(
'valaprog',
sources : ['config.vapi', 'prog.vala'],
dependencies : valadeps,
c_args : ['-DDATA_DIRECTORY="@0@"'.format(meson.current_source_dir()),
          '-DSOMETHING_ELSE="Out of this world!"']
)
test('valatest', e)

Как можно заметить значения аргументов выставляются через флаги для С компилятора

-DDATA_DIRECTORY="@0@".format(meson.current_source_dir())
-DSOMETHING_ELSE="Out of this world!"

Значение между собаками подставляется через функцию строки format.

meson-something-else.vapi

public const string SOMETHING_ELSE;

config.vapi

public const string DATA_DIRECTORY;

Last updated