makefile - 为文件夹中的文件制定推理规则

标签 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

最佳答案

使用模式规则:

Debug/%.obj : %.ss

关于makefile - 为文件夹中的文件制定推理规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2697390/

相关文章:

Java泛型(简单案例,推理清晰)

python - 将模型编译为可执行文件以加快推理速度?

c++ - C++11 中带有可变参数模板的 bindParameter 函数

c++ - 如何让我的基于 makefile 的 C++ 项目以最短和最简单的方式与 QT 库一起工作?

makefile - 显式地创建一个具有变量名的目标

c - Makefile 每次构建目标

java - 捕获 Java 泛型中的通配符

java - 使用Java实现贝叶斯推理

gradle - 并行化 GNU Makefile 等 gradle 任务

makefile - 在 Makefile 中获取最后一个进程的 PID