0

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

这是 Makefile 本身的相关片段:

 .SUFFIXES .c .o


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

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

4

1 回答 1

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 $@ $<
于 2013-04-24T20:53:06.760 回答