首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不丢失回车的情况下将文件内容分配给Makefile变量

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

Stack Overflow用户
提问于 2013-10-18 13:03:47
回答 2查看 1.9K关注 0票数 6

根据GNU手册

它将每个换行符或回车/换行符对转换为单个空格。如果这是结果中的最后一件事,它也会移除尾随(回车和)换行符。

但是,如果没有回车,使用awk就会更加困难:

代码语言:javascript
复制
FILE = $(shell cat $(PATH))
TEXT = $(shell echo "$(FILE)" | awk '/Text/ {print $$3}')

因此,我的问题是,在将文件内容分配给Makefile变量时,是否存在保留回车的方法,还是任何明智的解决办法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-18 15:02:44

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

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

代码语言:javascript
复制
FILE = $(PATH)
TEXT = $(shell cat $(FILE) | awk '/Text/ {print $$3}')

或者,为了避免UUOC,

代码语言:javascript
复制
TEXT = $(shell awk '/Text/ {print $$3}' < $(FILE))
票数 2
EN

Stack Overflow用户

发布于 2016-07-11 06:06:30

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

代码语言:javascript
复制
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)

下面是一个可以从源文件导入的示例:

代码语言:javascript
复制
#if 0 // MAKEFILE{

BOARD_TAG = attiny85

# usbtiny hack
MONITOR_PORT = usb
FORCE_MONITOR_PORT = define

#endif // MAKEFILE}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19450397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档