修改makefile中的环境变量

时间:2013-06-06 01:57:24

标签: makefile user-input

我维护了一个提供makefile for Arduino

的项目

有一个master(common)makefile,用户创建一个小的makefile,在那里设置某些环境变量,然后包含master makefile。

典型的makefile看起来像这样

# Arduino Make file. Refer to https://github.com/sudar/Arduino-Makefile 

BOARD_TAG    = atmega328
ARDUINO_PORT = /dev/ttyACM*

include $(ARDMK_DIR)/arduino-mk/Arduino.mk

最近,我debugging a bug然后发现,如果在BOARD_TAG环境变量的末尾有一个额外的空格,那么它会导致错误,这对某些人来说不是很直观固定。

我最初的想法是通过修改makefile中的环境变量来修复它。但第二个想法我不确定这是否是解决这个问题的正确方法。

所以我的问题是在makefile中修复这些用户输入问题的推荐方法是什么?我应该尝试修剪它还是有其他方法来解决这个问题?

1 个答案:

答案 0 :(得分:2)

要修改“就地”变量,只需将其视为simply expanded variable

BOARD_TAG = atmega328

BOARD_TAG := $(strip $(BOARD_TAG))

如果你使用“=”,它是一个递归扩展变量,所以右边的任何表达式(例如$(strip ...))都不会扩展,直到评估变量本身为止;如果你试图将变量本身放在右边,Make会警告你那个表达式无法被评估,因为它会进入无限循环。

如果使用“:=”,它将成为简单扩展的变量; Make然后在那里扩展右侧,将结果分配给变量,就是那个。