为什么 MSYS2 中的 gnu make ( (makefile) 解析 recipe 命令行参数中的 @file(文件名以 at 符号为前缀)

Why gnu make ( (makefile) in MSYS2 parse the @file (file name prefixed with an at symbol) in recipe command line arguments

提问人:ivan_wl 提问时间:10/28/2023 更新时间:10/28/2023 访问量:38

问:

The Makefile:

all:
    @echo -e "foo\nbar" > args.txt
    echo @args.txt
    echo "@args.txt"

运行它,输出为:

$ make
echo @args.txt
foo bar
echo "@args.txt"
@args.txt

看起来make(或其他东西?)解析“@param.txt”,从“param.txt”中读取内容,然后将它们用作命令行参数。

我使用的 make 是 Windows MSYS2 下的 GNU make 4.4。 我还在 Linux 下测试了 GNU make 4.3,它不解析“@param.txt”。

这是 make 的一些未记录的功能吗?

生成文件 GNU-make msys2

评论

0赞 HolyBlackCat 10/28/2023
Linux 上的 Make 4.4.1 没有重现,所以这不是 4.4 中引入的东西。如果直接从 MSYS2 bash 运行会怎样?echo @args.txt
0赞 ivan_wl 10/28/2023
@HolyBlackCat只是呼应“@args.txt”echo @args.txt
0赞 HolyBlackCat 10/28/2023
有趣。回到makefile,你是用还是用?我会尝试两者。makemingw32-make
0赞 HolyBlackCat 10/28/2023
有一些工具(例如)内置了这种处理方式,但我不确定为什么 Make 会强制所有可执行文件使用......gcc@
0赞 ivan_wl 10/28/2023
@HolyBlackCat 它实际上是 ,但我也在 Windows 上尝试了另一个版本的 gnu make,它也可以解析@args.txt/clang64/bin/mingw32-make.exe

答: 暂无答案