如何在不丢失回车的情况下将文件内容分配到Makefile变量中

如何在不丢失回车的情况下将文件内容分配到Makefile变量中,makefile,Makefile,根据: 它将每个换行符或回车/换行符对转换为单个空格。如果是结果中的最后一项,它还会删除尾部(回车和换行符) 但是,在没有回车的情况下使用awk会更加困难: FILE = $(shell cat $(PATH)) TEXT = $(shell echo "$(FILE)" | awk '/Text/ {print $$3}') 因此,我的问题是,当将文件内容分配给Makefile变量或任何智能解决方法时,是否有方法保持回车?否,您不能在$(shell…函数的结果中保留换行符 当然,您可以这样更

根据:

它将每个换行符或回车/换行符对转换为单个空格。如果是结果中的最后一项,它还会删除尾部(回车和换行符)

但是,在没有回车的情况下使用awk会更加困难:

FILE = $(shell cat $(PATH))
TEXT = $(shell echo "$(FILE)" | awk '/Text/ {print $$3}')

因此,我的问题是,当将文件内容分配给Makefile变量或任何智能解决方法时,是否有方法保持回车?

否,您不能在
$(shell…
函数的结果中保留换行符

当然,您可以这样更改makefile:

FILE = $(PATH)
TEXT = $(shell cat $(FILE) | awk '/Text/ {print $$3}')
或者,为了避免UOOC

TEXT = $(shell awk '/Text/ {print $$3}' < $(FILE))
TEXT=$(shell awk'/TEXT/{print$$3}'<$(文件))

下面是一种使用awk从文件中提取一些行并将它们导入makefile的方法,同时保留换行符

LOCAL_INO_SRCS ?= $(wildcard *.ino)
t = $(shell t=$$(mktemp);echo $$t;awk '/^\#if 0 .. MAKEFILE{/{f=1;next}/^\#endif .. MAKEFILE}/{f=0}f' $(LOCAL_INO_SRCS) >$$t )
include $t
$(shell rm $t)
下面是一个可以从源文件导入的示例:

#if 0 // MAKEFILE{

BOARD_TAG = attiny85

# usbtiny hack
MONITOR_PORT = usb
FORCE_MONITOR_PORT = define

#endif // MAKEFILE}