所以我想在线注释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 ...)
不适用于混合空格,除非替换所有空格,然后重新插入-
。
答案 0 :(得分:0)
当然,' 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}])
将证明这一点。