4

我正在尝试将我的 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

当我烘烤食谱时,我只在日志中看到“不起作用”。我认为这很奇怪,因为如果我FOO="bar"在 Makefile 中并刚刚运行make,那么我会在测试文件中看到“bar”打印。那么为什么它没有正确“通过”呢?

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

echo $(FOO) >> ./always_print.txt

然后在烘烤食谱后,我看到bar打印在我的“always_print.txt”文件中,但我看到“没有工作”打印在 test.txt 中......

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

4

2 回答 2

6

在定义你的 do_compile 方法之前,你必须定义变量 EXTRA_OEMAKE 其内容:

EXTRA_OEMAKE = "FOO=bar"

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

于 2016-02-18T07:49:56.593 回答
5

make语言不用"作引用字符,因此您正在比较$(FOO)"bar"包括引号)。只需省略引号:

ifeq ($(FOO),bar)
  ...
于 2013-03-13T16:54:43.920 回答