为文件夹中的文件制作推理规则

时间:2010-04-23 09:12:59

标签: makefile inference

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

1 个答案:

答案 0 :(得分:3)

使用模式规则:

Debug/%.obj : %.ss