gpt4 book ai didi

buildroot - 如何使 buildroot 包互斥?

转载 作者:行者123 更新时间:2023-12-01 00:54:55 26 4
gpt4 key购买 nike

我正在实现一个 buildroot 包 foo,它不能与特定的其他包 bar 一起包含。我试图通过编写 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

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

最佳答案

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

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

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

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

关于buildroot - 如何使 buildroot 包互斥?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28741417/

26 4 0