1

我有一个还没有做太多的makefile:

SRCS = *FOR

OBJS = $(SRCS:.FOR=.o)

tell_srcs: $(SRCS)
    echo $(SRCS)

tell_objs:  $(OBJS)
    echo $(OBJS)

make tell_srcs像我希望的那样运作,返回

file1.FOR file2.FOR file3.FOR ....

但是,make tell_objs返回完全相同的内容:

file1.FOR file2.FOR file3.FOR ....

这不是我所期望也不需要的。

我想重点是 make 并没有真正将结果存储*FOR在 $(SRCS) 中,而是将实际的*FOR“命令”存储在 $(SRCS) 中,而我试图获取 $(OBJS) 的替换没有效果... 我猜。无论如何,有没有办法让 make 将实际输出存储*FOR在 $(SRCS) 中,以便它可以作为常规宏运行?谢谢。

顺便说一句,这是版本信息:

 >make -v
 GNU Make 3.81
4

1 回答 1

2

尝试这个:

SRCS = $(shell echo *FOR)

OBJS = $(SRCS:.FOR=.o)

tell_srcs: $(SRCS)
    echo $(SRCS)

tell_objs:  $(OBJS)
    echo $(OBJS)

SRCS = *.FORSRCS 设置为*.FOR,而不是 *.FOR 的外壳扩展结果。因此,当处理 OBJS 时,它会尝试.FOR*FOR. 我怀疑您*.FOR在 SRCS 中尝试过并遇到了使用 OBJS 给出的问题*.o或目录中所有.o文件的列表。

make -p可以在这些情况下提供帮助,尽管我怀疑这个案例仍然是一个谜。

于 2013-08-21T17:41:15.337 回答