Иногда может понадобится чтобы некоторые константы подставлялись в код перед компиляцией.
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;
}
}
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;
public const string DATA_DIRECTORY;