如何使Meson对象不变?

时间:2019-04-15 14:34:25

标签: meson-build

here所述,我喜欢在子目录中创建文件对象,并在顶层文件中创建库/可执行文件。但是,由于所有变量最终都位于全局范围内,因此两个子目录文件可能会意外使用相同的变量名。例如:

# Top-level meson.build
subdir('src/abc')
subdir('src/def')
# src/abc/meson.build
my_files=files('1.c','2.c')
# src/def/meson.build
my_files=files('3.c','4.c')

当src / def / meson.build尝试为my_files分配值时,我希望介子引发错误。在Meson 0.50中有可能吗?

1 个答案:

答案 0 :(得分:0)

重新分配变量在介子中是相当合法的操作,因此看起来不可能以标准方式生成错误。避免此问题的一种方法是遵循一些命名规则,例如根据文件夹/子文件夹的名称(在您的情况下为abc_files,def_files)。

但是,如果您确实需要具有相同名称的变量并确保未重新分配它们,则可以使用 is_variable()函数,如果变量带有给定名称已分配。因此,在每个作业之前放置以下 assert

assert(not is_variable('my_files'), 'my_files already assigned!!!')
my_files=files('3.c','4.c')