gpt4 book ai didi

linux - 制作 : How to store result of a command in a macro?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:22:58 25 4
gpt4 key购买 nike

我有一个 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

最佳答案

试试这个:

SRCS = $(shell echo *FOR)

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

tell_srcs: $(SRCS)
echo $(SRCS)

tell_objs: $(OBJS)
echo $(OBJS)

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

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

关于linux - 制作 : How to store result of a command in a macro?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18362393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com