Я пытаюсь передать переменную из моего рецепта bitbake (.bb) в Makefile, который я вызываю.Как передать переменную из рецепта bitbake в make-файл?
В моем рецепте у меня есть:
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
, тогда я увижу «бар», напечатанный в тестовом файле. Так почему же он «не прошел» правильно?
Я побежал еще один тест, чтобы проверить, в моей Makefile я только поставил эту строку:
echo $(FOO) >> ./always_print.txt
И затем после выпечки рецепта я вижу bar
напечатан в моем файле «always_print.txt» пока я вижу " Не работает ", напечатанный в test.txt ...
Кто-нибудь знает, что я делаю неправильно здесь?
спасибо. Я делал это слишком сложным. Один вопрос для вас, почему он работал, когда я добавил FOO = «bar» непосредственно в мой Makefile и запускал его с помощью 'make'? Это потому, что есть разница в том, как он обрабатывает локальный define или экспортированный? – Mike
Если вы делаете 'FOO =" bar "' в Makefile, тогда '$ (FOO)' будет включать кавычки, поэтому ваше исходное сравнение будет работать. В 'BitBake' символ' '' * используется * для цитирования, поэтому 'export FOO =" bar "' приведет к '$ (FOO)', содержащему строку 'bar' (без кавычек). – Idelic