Mik*_*ike 3 makefile recipe openembedded bitbake
我正在尝试将我的bitbake(.bb)配方中的变量传递给我调用它的Makefile.
在我的食谱中我有:
export FOO="bar"
Run Code Online (Sandbox Code Playgroud)
当它运行do_compile()方法时,我让它调用我生成的Makefile.在我测试的Makefile中,通过以下方式正确设置了变量:
ifeq ($(FOO), "bar")
echo $(FOO) >> ./test.txt
else
echo "Didn't work" >> ./test.txt
endif
Run Code Online (Sandbox Code Playgroud)
当我烘焙食谱时,我只是在日志中看到"没有工作".我觉得这很奇怪,因为如果我FOO="bar"在我的Makefile中运行make,那么我会在测试文件中看到"bar".那么为什么它没有"正确"通过?
我又运行了一个测试验证,在我的Makefile中我只放了这行:
echo $(FOO) >> ./always_print.txt
Run Code Online (Sandbox Code Playgroud)
然后烘焙配方后,我看到bar打印在我的"always_print.txt"文件中,但我看到test.txt中打印出"Did not work"...
有没有人知道我在这里做错了什么?
该make语言不用"作引用字符,因此您要进行比较$(FOO)("bar"包括引号)。只需省略引号即可:
ifeq ($(FOO),bar)
...
Run Code Online (Sandbox Code Playgroud)
在定义do_compile方法之前,你必须定义变量EXTRA_OEMAKE这个内容:
EXTRA_OEMAKE = "FOO=bar"
Run Code Online (Sandbox Code Playgroud)
之后,在do_compile方法中,您必须调用'oe_runmake'.该调用调用命令'make',并且EXTRA_OEMAKE变量中定义的所有内容作为参数传递给'make'命令.希望这可以帮助!