首页 > 解决方案 > 如何在命令行中传递存储在文本文件中的make标志?

问题描述

我有一个名为 OPTIONS.txt 的文本文件,用于存储 Makefile 的所有标志:

arg1=foo arg2="-foo -bar"

我想将此文件中的所有标志传递给make. 然而,

make `cat OPTIONS.txt`

失败make: invalid option -- 'a'。似乎shell将其解释为:

make arg1=foo arg2="-foo -bar"
     ^argv[1] ^argv[2]   ^argv[3]

有没有办法让它解释为:

make arg1=foo arg2="-foo -bar"
     ^argv[1] ^--------argv[2]

标签: shellgnu-make

解决方案


由于您控制选项文件,因此每行存储一个选项:

arg1=foo
arg2="-foo -bar"

然后在 shell 中,将文件读入一个数组,每行一个元素:

readarray -t opts < OPTIONS.txt

现在您可以调用 make 并保持选项完整:

make "${opts[@]}"

推荐阅读