如何正确评论GNU Make中的变量定义?

时间:2015-07-23 11:58:49

标签: string replace comments gnu-make

所以我想在线注释Makefile中的变量定义。问题是Make不会在定义和注释之间去掉空格。这是我的意思的一个例子:

OPTS += -DBLA       # Does bla
OPTS += -DBLUBB     # Does blubb
OPTS += -DEND

.PHONY test
test:
    @echo $(OPTS)

这是

的输出
-DBLA       -DBLUBB     -DEND

选项之间有额外的空白区域。我想要的是这个:

-DBLA -DBLUBB -DEND

如何解决这个问题? Make字符串函数@echo $(strip $(OPTS))只会删除-DEND之后或-DBLA之前的空格,而不是之间的空格。到目前为止,我的脏黑客是@echo $(shell $(OPTS)),它剥离了不需要的空格,但是使用shell调用这样做,这可能会引入其他问题,即通过$(OPTS)变量进行不必要的shell注入。有没有更好的方法呢?简单@echo ($subst ...)不适用于混合空格,除非替换所有空格,然后重新插入-

2 个答案:

答案 0 :(得分:0)

image
当然,' zZz'可以被任何"不可能的"取代。匹配...

答案 1 :(得分:0)

OPTS += -DBLA#     Does bla
OPTS += -DBLUBB#   Does blubb
OPTS += -DEND

规范的 make ? 不过不喜欢结盟。

OPTS += -DBLA# Does bla
OPTS += -DBLUBB# Does blubb
OPTS += -DEND

看起来更好。

假设它使您的眼睛流血, $(strip)实际上可以满足您的需求。

OPTS := $(strip ${OPTS})

一个简单的$(error [${OPTS}])将证明这一点。