• ベストアンサー

Linux Makefile変数の値をプロンプトから受けたい

Linux上でソースコンパイルのためのMakefileを書いてるんですが、インストール先をmake実行者に標準入力から入力させたいんですよ。 bashのreadコマンドで変数に入れられんのかな?と思って以下のように書いて実行しましたがうまく行きません。 ------------------------------------------------- install : @read -p "install dir << " DIR cp -p ${FILE} ${DIR} ------------------------------------------------- echoさせてみると${DIR}は空っぽみたいです。 どなたか、書き方を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.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}

oksunis
質問者

お礼

ありがとうございました。これで解決です! とあるモジュールのインストール先がそれぞれ使うユーザーによって異なるというもので、単にmakeした後で勝手にcpしてもらっても良かったんですが、使う側の技術レベルがまちまちなんで親切機能をつけてやりたかったんですよ。感謝!

その他の回答 (1)

  • THX1138
  • ベストアンサー率51% (108/208)
回答No.1

make で対話的な処理を行うのはあまり一般的ではありません。 インストール先をユーザに入力させたいのであれば、make に '=' を含む引数を渡すと、変数指定であるとみなされるので、上記の例なら host% make install DIR=/usr/local/foo などとさせる方法がありますが、それではダメでしょうか。

関連するQ&A