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

时间:2013-03-13 16:10:57

标签: makefile recipe openembedded bitbake

我正在尝试将我的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中看到“没有工作”......

有没有人知道我在这里做错了什么?

2 个答案:

答案 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)
  ...