将文件放入不同的文件夹时,通用make rule help

时间:2013-04-24 20:49:41

标签: makefile

我有这样的制定规则。我希望它定义一个通用规则,描述将任何C文件转换为编译的Object文件。它工作正常,但我想将我的C文件保存在一个文件夹中,并将文件输出到另一个文件夹中。

以下是Makefile本身的相关片段:

 .SUFFIXES .c .o


.c.o :
    $(GCC) -c $(CFLAGS) $< -o $@

我想修改这个makefile规则,告诉make在一个文件夹中找到源(C)文件,比如说$(C_DIR),运行GCC然后把OBJ文件放到$(O_DIR)

1 个答案:

答案 0 :(得分:1)

您无法使用后缀规则执行此操作。为此,您必须使用非POSIX标准的make功能。 GNU make(例如GNU / Linux系统上的标准make,几乎可用于任何其他平台)提供了可以执行此操作的模式规则:

SRCS = foo.c bar.c baz.c

OBJS = $(addprefix $(O_DIR)/,$(SRCS))

all: $(OBJS)

$(O_DIR)/%.o : $(C_DIR)/%.c
        $(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $<