代码之家  ›  专栏  ›  技术社区  ›  Gauthier

为文件夹中的文件生成推理规则

  •  3
  • Gauthier  · 技术社区  · 14 年前

    我使用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 回复  |  直到 14 年前
        1
  •  3
  •   Marcelo Cantos    14 年前

    使用模式规则:

    Debug/%.obj : %.ss