- 締切済み
makeで環境に応じ処理を変える際、綺麗な書き方
とあるプロジェクトをビルドしようとしていて、makefileを書いています。 make installで、環境に応じ処理が適切に切り替わるようにしようとしてますが、 ifdef, ifeq, もしくはシェルコマンドのif以外で良い方法はないでしょうか。 具体的に一例をあげると、scp, sshが使える環境(typeで判断)と、ftp, telnetしかない 環境で、インストール(コピー)に使うコマンドを変えたいという感じです。 (実際はもっと違いますが、OSにインストールされてるコマンドの中で最適なものを 使いたいという意味では同じ) ・ifdef, ifeqの場合 make実行直後のmakefile解析時に評価されるため、makefileに分岐の条件になる定数を 宣言するか、手動でmake install PARAMXXX=VALUEXXXのように書くしかなく、 makeのお任せ感が弱まる。 手順書に書かないといけないとすると、その手間の方がキツイ。 しかし、シェルのif文のように、改行をエスケープする'\'を乱発しなくてもよいので makefileの見た目は綺麗になる ・シェルのifの場合 シェルコマンドがtest部分に使え、しかもターゲット作成コマンド実行時に評価される ので、コマンドの有無を調べて条件分岐という今回のような趣旨に合う。 しかし、各コマンドは一行で完結してないといけないという制約のため、比較的長めの 処理(ビルドした内容のインストールなど)は、'\'の連続でmakefileが汚くなる。
- みんなの回答 (2)
- 専門家の回答