如何将文件内容分配到Makefile变量而不会丢失回车符

Zha*_*Fan 5 makefile

根据GNU手册:

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

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

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

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

Mad*_*ist 2

不,您不能在函数结果中保留换行符$(shell ...)

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

FILE = $(PATH)
TEXT = $(shell cat $(FILE) | awk '/Text/ {print $$3}')
Run Code Online (Sandbox Code Playgroud)

或者,为了避免 UUOC,

TEXT = $(shell awk '/Text/ {print $$3}' < $(FILE))
Run Code Online (Sandbox Code Playgroud)