- ベストアンサー
Linux Makefile変数の値をプロンプトから受けたい
Linux上でソースコンパイルのためのMakefileを書いてるんですが、インストール先をmake実行者に標準入力から入力させたいんですよ。 bashのreadコマンドで変数に入れられんのかな?と思って以下のように書いて実行しましたがうまく行きません。 ------------------------------------------------- install : @read -p "install dir << " DIR cp -p ${FILE} ${DIR} ------------------------------------------------- echoさせてみると${DIR}は空っぽみたいです。 どなたか、書き方を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
makeでは実行行は1行ずつ、sh -c "行内容" のようにして実行されるので、次の行に変数を引き継ぐことは出来ません。 install: @read -p "install dir <<" DIR;cp -p ${FILE} $${DIR} のように1行にすればOKです。$${DIR}と$を重ねるのは、make が sh に渡す前に変数展開してしまわないようにするためです。 ただし、上記のようにすると、cp まで @ が効いて表示されないので、表示したければ、 @read -p "install dir <<" DIR;echo cp -p ${FILE} $${DIR};cp -p ${FILE} $${DIR}
その他の回答 (1)
- THX1138
- ベストアンサー率51% (108/208)
make で対話的な処理を行うのはあまり一般的ではありません。 インストール先をユーザに入力させたいのであれば、make に '=' を含む引数を渡すと、変数指定であるとみなされるので、上記の例なら host% make install DIR=/usr/local/foo などとさせる方法がありますが、それではダメでしょうか。
お礼
ありがとうございました。これで解決です! とあるモジュールのインストール先がそれぞれ使うユーザーによって異なるというもので、単にmakeした後で勝手にcpしてもらっても良かったんですが、使う側の技術レベルがまちまちなんで親切機能をつけてやりたかったんですよ。感謝!