生成文件,宏修饰符



我对编写制作文件相对较新,可以使用一些指针。我想要实现的目标可能是相当基本的,但在搜索网络后,我不明白如何实现。

我想将一组目标文件从

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

SRCDIR = /some/dir/
BUILDDIR = /some/dir/
CSRC = 
        $(SRCDIR)f1.c 
        $(SRCDIR)f2.c 
OSRC = $(CSRC,.c=.o,F,<$(BUILDDIR))
all:
    @echo $(OSRC)

只需放入 all 规则以检查目标文件宏是否设置正确。不幸的是,它不是,而是空的。取代

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

OSRC = $(CSRC:.c=.o)

确实给了我一个对象文件的宏,但没有正确的目录。因此,有关如何修改我的文件以获得我想要的内容的见解将不胜感激。(我正在使用GNU Make 3.82)

我不确定你从哪里得到$(CSRC,.c=.o,F,<$(BUILDDIR));在GNU中甚至没有什么比这种语法更遥远的了。

该语句$(CSRC:.c=.o)将所有.c后缀替换为 .o ,但这对您没有帮助,因为您还想替换目录。

您应该使用$(patsubst ...)函数:

OSRC = $(patsubst $(SRCDIR)%.c,$(BUILDDIR)%.o,$(CSRC))

相关内容

  • 没有找到相关文章

最新更新