我使用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
.