【问题标题】:How do I make buildroot packages mutually exclusive?如何使 buildroot 包互斥?
【发布时间】:2015-04-28 18:27:15
【问题描述】:

我正在实现一个 buildroot 包 foo,它不能与特定的其他包 bar 一起包含。我试图通过在各自的Config.in-files 中写入depends on-statements 来定义包互斥。

foo/Config.in:

config BR2_PACKAGE_FOO
    depends on !BR2_PACKAGE_BAR
    ...

bar/Config.in:

config BR2_PACKAGE_BAR
    depends on !BR2_PACKAGE_FOO
    ...

这导致 make menuconfig 行为异常并给出以下错误消息:

package/foo/Config.in:1:error: recursive dependency detected!
package/foo/Config.in:1:    symbol BR2_PACKAGE_FOO depends on BR2_PACKAGE_BAR
package/bar/Config.in:1:    symbol BR2_PACKAGE_BAR depends on BR2_PACKAGE_FOO

声明这种互斥依赖的正确方法是什么?

【问题讨论】:

    标签: buildroot kbuild


    【解决方案1】:

    如错误所示,两个 Kconfig 符号不可能用 dependsselectif 相互引用。因此,您必须确保依赖关系朝着一个方向发展。

    不幸的是,没有很好的方法来解决这个问题。最简单的是将依赖项放在两个符号之一上,所以:

    config BR2_PACKAGE_FOO
        depends on !BR2_PACKAGE_BAR
    config BR2_PACKAGE_BAR
        # No depends on BR2_PACKAGE_FOO
    

    这仍然确保只能选择其中一个,但它是不对称的:当您选择 BAR 时,FOO 将消失,但当您选择 FOO 时,BAR 保持可见。

    【讨论】:

      猜你喜欢
      • 2011-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-06
      • 1970-01-01
      • 2021-03-30
      • 2017-09-24
      相关资源
      最近更新 更多