如何使buildroot包互斥?

时间:2015-02-26 11:37:19

标签: buildroot kbuild

我实现了一个buildroot软件包foo,它不能与特定的其他软件包一起包含在内。我试图通过在相应的depends on文件中编写Config.in - 语句来定义相互排斥的包。

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

宣布这种相互排斥的依赖的正确方法是什么?

1 个答案:

答案 0 :(得分:4)

如错误所示,两个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会保持可见。