我目前正在编写一个更大的makefile,它将处理源文件的递归结构,并将它放入目标目录中的同一个递归结构中。基本上,你可以假设这样的Makefile:GNU Make - 如何处理目标文件中的路径
DESTINATION_DIR = out
SOURCE_DIR = src
OBJECTS = out/abc.o out/subdir/test.o out/subdir/subdir/xyz.o
.PHONY: all
all: $(OBJECTS)
$(DESTINATION_DIR)/%.o: $(SOURCE_DIR)/%.c
@echo "[email protected] --- $<"
正如你看到的,我想用$(SOURCE_DIR)的依赖,以取代$(DESTINATION_DIR),但这并不工作。我该如何解决这个问题?我甚至试图用这种方式替换脚本:
%.o: $(shell myreplacementscript.py "%.c" "$(DESTINATION_DIR)" "$(SOURCE_DIR)")
@echo "[email protected] --- $<"
但百分比符号将被传递到我的脚本没有更换。那么我怎么能告诉它输出依赖于源文件动态?我需要将子目录保存在OBJECTS变量中,我不能将结构展平。而子目录是动态的,而不是预定义的。
我已经搜索了其他人有相同的问题,但他们要么有平的OBJECTS或递归的制造,在我的情况是不适合的,因为根据依赖目录之间的互连。
摘要/错误消息:
它不会取代输出/输入与Src /对象。所以错误信息是“Keine Regel vorhanden,um das Target»out/abc.o«,benötigtvon»all«,zu erstellen。Schluss。”这是典型的错误“没有制定目标的规则......”。
完整的makefile可以在这里看到: Full Makefile
每当我离开%的.html结肠的右手边在左侧它的工作原理,但我需要有源文件作为依赖以获得工作增量构建(希望没有创建依赖文件)。
亲切的问候,
丹尼尔
你使用什么版本的Make? (如果您不确定,请尝试使用'make -v'。) – Beta 2014-09-24 22:55:30
如果您确切地说明了_but这不起作用_实际上意味着(错误消息?错误行为?缺少行为?),那么帮助会简单得多您。 – MadScientist 2014-09-24 23:34:47
@Beta:GNU Make 3.81 – DanielB 2014-09-25 07:12:07