我有一堆推理规则,如果我有办法表达当前目标的目录,我可以简化很多。通常会有$(@D)
用于此目的,但它似乎不适用于(批处理)推理规则,即以::
结尾的规则:
fatal error U1100: macro '$(@D)' is illegal in the context of batch rule [...]
是否存在可用于推理规则的替代方法,并且允许我保持整体规则的数量,特别是 - 不必重复自己在另一个上下文中将成为函数调用的参数的东西
我目前的解决方法是使用非批量推理规则。因此,而不是批处理表格:
{foo}.c{bar}.obj::
$(CC) ...
我正在使用非批处理表单,这意味着它每个文件调用一次编译器,而不是每个“与推理规则匹配的一堆文件”调用一次:
{foo}.c{bar}.obj:
$(CC) ...
它还使日志文件更长,可读性更低,但它主要减慢了构建速度。