シェル スクリプトを使用して 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) の後のパラメーターのみに変更し、シェル スクリプトに -O1 を追加しようとしました。
opts=$(printf "\"-O%d %s\"", 1, "$line")
(そして、あまり賢明ではないと思われる他の多くのこと)が、それでも同じエラーメッセージが表示されます。
シェル スクリプトで make するパラメータをハードコーディングすると、問題なく動作します。
make CFLAGS="-O1 -freorder-functions"
これがばかげた質問である場合は申し訳ありませんが、このようなことがどのように行われるかの例を見つけることができないようで、シェルスクリプトを初めて使用するため、ここで変数をどのように扱っているかよくわかりません. 私が CFLAGS に渡そうとしていることのエコーは、私には問題ないように見えます。