Macros Makefile,宏修改器

Macros Makefile,宏修改器,macros,path,makefile,substitution,modifiers,Macros,Path,Makefile,Substitution,Modifiers,我对编写make文件比较陌生,可以使用一些指针。我试图实现的可能是相当基本的,但在搜索了web之后,我无法理解如何实现 我想将一组对象文件从src目录编译到构建目录中,我的天真想法是将源文件集定义为宏,使用宏修饰符为对象文件创建宏(以便在重新编译时将这些文件与源文件进行正确比较。我当前创建对象文件宏的方案如下所示: SRCDIR = /some/dir/ BUILDDIR = /some/dir/ CSRC = \ $(SRCDIR)f1.c \ $(SRCDIR

我对编写make文件比较陌生,可以使用一些指针。我试图实现的可能是相当基本的,但在搜索了web之后,我无法理解如何实现

我想将一组对象文件从src目录编译到构建目录中,我的天真想法是将源文件集定义为宏,使用宏修饰符为对象文件创建宏(以便在重新编译时将这些文件与源文件进行正确比较。我当前创建对象文件宏的方案如下所示:

SRCDIR = /some/dir/
BUILDDIR = /some/dir/
CSRC = \
        $(SRCDIR)f1.c \
        $(SRCDIR)f2.c \

OSRC = $(CSRC,.c=.o,F,<$(BUILDDIR))

all:
    @echo $(OSRC)

确实为我提供了一个对象文件宏,但没有正确的目录。因此,如果您能深入了解如何修改我的文件以获得我想要的内容,我将不胜感激。(我使用的是GNU Make 3.82)

我不确定您从何处获得
$(CSRC,.c=.o,F,是的,你是退出的权利,在第二次看了网页,在那里我得到了语法我意识到这不是GNU制作语法,但Opus制作,对不起我的困惑,并感谢正确的语法使用GNU。
OSRC = $(CSRC,.c=.o,F,<$(BUILDDIR))
OSRC = $(CSRC:.c=.o)
OSRC = $(patsubst $(SRCDIR)%.c,$(BUILDDIR)%.o,$(CSRC))