如何为 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 $; }')
我正在使用这个问题: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 $; }')