3

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

4

1 回答 1

3

使用模式规则:

Debug/%.obj : %.ss
于 2010-04-23T09:22:18.653 回答