1

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

# 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 中可能吗?

4

1 回答 1

0

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

但是,如果您确实需要具有相同名称的变量并确保它们没有被重新分配,您可以使用is_variable()函数,如果具有给定名称的变量已被分配,则该函数返回true 。因此,在每个分配之前放置以下断言:

assert(not is_variable('my_files'), 'my_files already assigned!!!')
my_files=files('3.c','4.c')
于 2019-04-15T15:59:08.150 回答