【发布时间】:2015-02-22 23:11:42
【问题描述】:
我正在尝试通过 shell 脚本使用 gnu make (4.1) 构建一些 c 程序。我想使用从文件中读取的不同 CFLAGS 参数。该文件包含如下行:
"-O1 -freorder-functions"
我正在尝试做类似的事情
while read line
do
opts="$line"
make CFLAGS="$opts"
done < $1
但我所有的尝试都以以下错误告终:
cc1: error: argument to ‘-O’ should be a non-negative integer, ‘g’, ‘s’ or ‘fast’
所以我尝试将文件内容更改为仅-O1(-freorder-functions)之后的参数,并在shell脚本中添加-O1:
opts=$(printf "\"-O%d %s\"", 1, "$line")
(以及许多其他看起来不太明智的事情)但我仍然收到相同的错误消息。
在 shell 脚本中硬编码参数可以正常工作:
make CFLAGS="-O1 -freorder-functions"
对不起,如果这是一个愚蠢的问题,但我似乎找不到任何这样的事情是如何完成的例子,而且我是 shell 脚本的新手,所以我真的不明白它是如何处理变量的这里。我试图传递给 CFLAGS 的回声看起来不错。
【问题讨论】:
标签: bash shell makefile cflags