我使用 GNU make,我希望我的源文件和目标文件位于不同的文件夹中。
作为第一步,我希望源文件位于我的项目文件夹的根目录下,目标文件位于子文件夹中(比如 Debug/
)。
推理规则是:
.ss.obj:
echo Assembling $*.ss...
$(ASSEMBLY) $(2210_ASSEMBLY_FLAGS) $*.ss -o Debug\$*.obj
但在那种情况下,make 会一直重建所有文件,因为根文件夹中没有 .obj。
有没有办法在 .ss.obj
行中包含目标文件夹?
我也试过:
$(OBJS_WITH_PATH):$(SRC)
echo Assembling $<...
$(ASSEMBLY) $(ASSEMBLY_FLAGS) $< -o $@
以 $(SRC)
作为我所有来源的列表,$(OBJS_WITH_PATH)
以这种方式构建:
OBJS_WITH_PATH = $(patsubst %.ss,Debug\\%.obj,$(SRC))
但这会为所有目标文件建立对所有源文件的依赖。
我想修改我先写的推理规则,取Debug/*.obj
文件。它现在说的是no rule to make target Debug/asdfasdf.obj
。
最佳答案
使用模式规则:
Debug/%.obj : %.ss
关于makefile - 为文件夹中的文件制定推理规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2697390/