如何为 Makefile 中的变量赋值?

How to assign a value to a variable in a Makefile?

我正在使用这个问题:Assign a makefile variable value to a bash command result? 来尝试解决我的问题,但它似乎不起作用。

我有一个单线来获取连接的 Arduino 的当前端口,我需要在 Makefile 中作为参数:

[bf@localhost GameCode]$ arduino-cli board list | grep arduino:megaavr:nona4809 | awk '{ print ; }'
/dev/ttyACM0

如您所见,这工作正常。但现在我想在我的 Makefile:

中使用它
BOARD=arduino:megaavr:nona4809
PORT=$(shell arduino-cli board list | grep $$BOARD | awk '{ print $; }')
OUTPUT=mycode.hex

program: $(OUTPUT)
     eeprom-program -f $(OUTPUT) -p $(PORT)

但是,$(PORT)似乎完全是空的。我知道我可以用 shell 脚本解决这个问题,但由于这只是一行,我不想用小脚本弄乱我的目录。

如何在我的 Makefile 中获取该命令?

这里...

BOARD=arduino:megaavr:nona4809
PORT=$(shell arduino-cli board list | grep $$BOARD | awk '{ print $; }')

...您正确地将 </code> 转义为 <code>$ 以将前者传递给 shell。但是您不想将 $BOARD 传递给 shell。相反,您希望 make 扩展那个:

BOARD=arduino:megaavr:nona4809
PORT=$(shell arduino-cli board list | grep $(BOARD) | awk '{ print $; }')