从源文件生成目标文件的通用“make”规则

Posted

技术标签:

【中文标题】从源文件生成目标文件的通用“make”规则【英文标题】:Generic `make` rule for generating object files from source files 【发布时间】:2014-03-08 19:43:38 【问题描述】:

我将所有源文件都放在一个名为src 的目录中,我希望将所有目标文件放在一个目录obj 中。是否可以编写一个通用的make 规则(最好也适用于nmake),它将生成与源文件对应的目标文件并将其放置在正确的目录中?

【问题讨论】:

在例如 GNU make 中执行此操作很简单。我不知道如何在 nmake 中做到这一点。 @MadScientist 我该怎么做?我只找到了.c.o 语法,它将 C 源代码转换为同一目录中的目标文件。 【参考方案1】:

对于 GNU make,您可以使用模式规则,如下所示:

SRCDIR = src
OBJDIR = obj

$(OBJDIR)/%.o : $(SRCDIR)/%.c
        $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<

【讨论】:

【参考方案2】:

借助 nmake,您可以使用带有路径的推理规则:

src\.cobj\.obj:
        $(CC) $(CFLAGS) -c -o $@ $<

【讨论】:

以上是关于从源文件生成目标文件的通用“make”规则的主要内容,如果未能解决你的问题,请参考以下文章

GNU make:删除生成的文件时如何重建哨兵目标?

makefile文件详解

Makefile文件_书写规则

GNU make:规则专题

用make生成c源的目标文件时如何生成依赖文件

Makefile