如何将bitbake配方中的变量传递到makefile?

如何将bitbake配方中的变量传递到makefile?,makefile,recipe,openembedded,bitbake,Makefile,Recipe,Openembedded,Bitbake,我试图将bitbake(.bb)配方中的一个变量传递到我让它调用的Makefile 在我的食谱中,我有: export FOO="bar" 当它运行do\u compile()方法时,我让它调用我生成的Makefile。在Makefile中,我测试了通过以下方式正确设置的变量: ifeq ($(FOO), "bar") echo $(FOO) >> ./test.txt else echo "Didn't work" >> ./test.txt endi

我试图将bitbake(.bb)配方中的一个变量传递到我让它调用的Makefile

在我的食谱中,我有:

export FOO="bar"
当它运行
do\u compile()
方法时,我让它调用我生成的Makefile。在Makefile中,我测试了通过以下方式正确设置的变量:

ifeq ($(FOO), "bar")
    echo $(FOO) >> ./test.txt
else
    echo "Didn't work" >> ./test.txt
endif
当我烘焙食谱时,我在日志中看到“不起作用”。我觉得这很奇怪,因为如果我在Makefile中有
FOO=“bar”
,然后运行
make
,那么我会看到测试文件中打印了“bar”。那么为什么它没有正确地“通过”呢

我又运行了一个测试来验证,在我的Makefile中,我只放了这一行:

echo $(FOO) >> ./always_print.txt
然后在烘焙配方后,我看到
打印在我的“always_print.txt”文件中,而我看到test.txt中打印的“不起作用”


有人知道我做错了什么吗?

语言没有使用
作为引用字符,因此您将
$(FOO)
“bar”
(包括引号)进行比较。只需省略引号:

ifeq ($(FOO),bar)
  ...

在定义do_compile方法之前,必须定义变量EXTRA_OEMAKE,该变量包含以下内容:

EXTRA_OEMAKE = "FOO=bar"

在此之后,在do_compile方法中,必须调用“oe_runmake”。该调用调用命令“make”,并将EXTRA_OEMAKE变量中定义的所有内容作为参数传递给“make”命令。希望这能有所帮助!

非常感谢。我把它弄得太复杂了。有一个问题是,当我添加FOO=“bar”时,它为什么工作“直接在我的Makefile中并使用
make
运行它?”?这是因为它处理本地定义和导出定义的方式不同吗?如果在Makefile中执行
FOO=“bar”
,则
$(FOO)
将包含引号,因此原始比较将有效。在
BitBake
中,
字符用于引用,因此
export FOO=“bar”
将导致
$(FOO)
包含字符串
bar
(不带引号)。