【问题标题】:How do I make Meson object constant?如何使介子对象保持不变?
【发布时间】:2019-04-15 14:34:24
【问题描述】:

正如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')

我希望 meson 在 src/def/meson.build 尝试为 my_files 赋值时抛出错误。这在 Meson 0.50 中可行吗?

【问题讨论】:

  • 目前不可能。您可能想阅读此讨论:issue #2607。也许是时候提出功能请求了?
  • 谢谢!我以前没看过这样的讨论。我现在对此有一个功能请求,issue #5270

标签: meson-build


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2011-11-16
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多