ビルドの別の部分を実行するために別の外部bashスクリプトを呼び出したいメイクファイルがあります。これをどうやってやるのがベストだろう。
Makefileから他のコマンドを呼び出すのと同じように:
target: prerequisites
Shell_script arg1 arg2 arg3
あなたのさらなる説明に関して:
.PHONY: do_script
do_script:
Shell_script arg1 arg2 arg3
prerequisites: do_script
target: prerequisites
メイクファイルルールの各アクションは、サブシェルで実行されるコマンドです。各コマンドは個別のサブシェル内で実行されるため、各コマンドが独立しているを確認する必要があります。
このため、作成者が複数のコマンドを同じサブシェルで実行する場合、改行がエスケープされることがよくあります。
targetfoo:
command_the_first foo bar baz
command_the_second wibble wobble warble
command_the_third which is rather too long \
to fit on a single line so \
intervening line breaks are escaped
command_the_fourth spam eggs beans
おそらく既に提供されている答えのようにそれを行う「正しい」方法ではありませんが、ソフトウェアのパッケージ全体のバージョンを提供するヘッダーファイルを生成するために作成したスクリプトをメイクファイルで実行したいため、この質問に出会いました。このパッケージにはかなりの数のターゲットがあり、それらすべてに新しい前提条件を追加したくありませんでした。これをメイクファイルの先頭に置くとうまくいきました
$(Shell ./genVer.sh)
これは、単にシェルコマンドを実行するようにmakeに指示します。 ./genVer.sh
は、実行するスクリプトのパス(makefileと同じディレクトリ)と名前です。これは、私がどのターゲットを指定しても実行されます(マイナス面であるclean
を含みますが、最終的には大したことではありません)。