我正在使用macOS的默认内置版本(如果它有任何区别)。我试图制作一个makefile来管理单独目录中的超小型项目,这些目录由其中包含makefile的另一个目录包含。所以,与其写出关于每个项目的信息 - 这需要永远 - 我已经遵循模式规则。但是,无论何时在目标依赖关系中存在一个目录,它都会变得疯狂,并说“无法完成目标”或“目标是最新的”。例如:模式规则和目录
%: %.c
gcc -o [email protected] $<
工作得很好。但是,如果我这样做:
%: %/%.c
gcc -o [email protected] $<
“目标是最新的”,无论我做什么。我试过让它.PHONY
,并没有结果。我甚至试着这样做:
define FUNC
$1: $1/$1.c
gcc -o $1 $1.c
endef
%:
$(call FUNC,[email protected])
再次,没有什么变化,即使我让它再次.PHONY
。 (不像.PHONY: %
,当然,像.PHONY: a
,然后我试着做make a
)为什么第二个例子没有工作?有没有解决方法?