我正在尝试将我的bitbake(.bb)配方中的变量传递给我调用它的Makefile。
在我的食谱中我有:
export FOO="bar"
当它运行do_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
然后在烘焙配方后,我看到bar
打印在我的“always_print.txt”文件中,但我在test.txt中看到“没有工作”......
有没有人知道我在这里做错了什么?
答案 0 :(得分:5)
在定义do_compile方法之前,你必须定义变量EXTRA_OEMAKE这个内容:
EXTRA_OEMAKE = "FOO=bar"
之后,在do_compile方法中,您必须调用' oe_runmake'。该调用调用命令' make',并且EXTRA_OEMAKE变量中定义的所有内容作为参数传递给' make'命令。希望这有帮助!
答案 1 :(得分:3)
make
语言不使用"
作为引用字符,因此您需要将$(FOO)
与"bar"
进行比较(包含引号)。只需省略引号:
ifeq ($(FOO),bar)
...