Makefile Gnu make:为特定目标在命令中添加标志

Makefile Gnu make:为特定目标在命令中添加标志,makefile,gnu-make,Makefile,Gnu Make,我有以下make脚本(摘录): debug/abc-%.txt: python buildtxt.py--firstFlag 其中应为--debug,如果%为debug,否则为空(即无标志)。这种行为可以简单地在buildtxt.py中实现,但我认为这样做更模块化 如何轻松实现此功能?您需要$(如果$(过滤器调试,$*),--debug) $*扩展到与%匹配的字符串。没有内置函数来比较字符串是否相等,因此我们使用了filter。这很有见地。我对makefile非常陌生,我认为编写它们与其他脚本

我有以下
make
脚本(摘录):

debug/abc-%.txt:
python buildtxt.py--firstFlag
其中
应为
--debug
,如果
%
debug
,否则为空(即无标志)。这种行为可以简单地在
buildtxt.py
中实现,但我认为这样做更模块化

如何轻松实现此功能?

您需要
$(如果$(过滤器调试,$*),--debug)


$*
扩展到与
%
匹配的字符串。没有内置函数来比较字符串是否相等,因此我们使用了
filter

这很有见地。我对makefile非常陌生,我认为编写它们与其他脚本有很大的不同……这就是shell的
if
?@HerpDerpington不,它内置于Make中。每次Make看到一个
$
,它都会尝试用它做一些事情。如果要将其转发到shell,则必须将其转义为
$
。makefile不是一个脚本,就像shell或python之类。它描述了构建操作中涉及的文件之间的关系,并用一些shell脚本进行了注释,这些脚本描述了如何实现这些关系。make不会像脚本一样从makefile的第一行开始并开始“运行”它。它读取整个makefile,构建一个关系图,然后遍历该图以满足它们。只需转到手册并使用其索引即可。您还可以在单个页面上查看整个手册,并使用浏览器的搜索功能,或者将其作为PDF格式进行搜索。从这里开始:有很多术语很难在谷歌中搜索,无论语言如何。有一件事需要非常小心:手册记录了最新版本。您的版本越旧,新功能就越少。有关添加内容的时间,请参见新闻文件:
debug/abc-%.txt:
    python buildtxt.py --firstFlag <second flag>