我有一个带有一组布尔值的Makefile,必须用它来控制外部应用程序的标志 . 问题是该标志必须以逗号分隔的字符串形式传递 .
像这样的东西(非工作伪代码):
WITH_LIST = ""
WITHOUT_LIST = ""
ifeq ($(BOOL_A),y)
# Append A to list "WITH_LIST"
else
# Append A to list "WITHOUT_LIST"
endif
ifeq ($(BOOL_B),y)
# Append B to list "WITH_LIST"
else
# Append B to list "WITHOUT_LIST"
endif
ifeq ($(BOOL_C),y)
# Append C to list "WITH_LIST"
else
# Append C to list "WITHOUT_LIST"
endif
现在假设BOOL_A == y,BOOL_B == n和BOOL_C == y,我需要运行以下命令:
./app --with=A,C --with-out=B
如何使用Gnu Make生成这些字符串?
3 回答
或者只是使用
sed
:丑陋(和未经测试)但直截了当一个像 . 的结构
应该管用 .
编辑:对不起,忽略了必要的整理 .
我们的想法是检查每个可能的部分X是否设置为是,如果是,则将其插入列表 . 这个列表是空格分隔的,很难用make逗号分隔,但很容易在shell中完成 .
首先,使用您的方法或thiton创建两个以空格分隔的列表 . 然后你使用section 6.2 of the GNU make manual末尾的小技巧来创建一个包含单个空格的变量,一个用逗号保存 . 然后,您可以在
$(subst ...)
中使用这些将两个列表更改为逗号分隔 .