ayu-mushi's website
Makefile っぽいことをシェルコマンドでする
- Published
2018-4-8 - Last Modified
2018-04-08
- Source of This Page(GitHub)
- https://github.com/ayu-mushi/ayu-mushi.github.io/blob/develop/src/article/instead-of-makefile.mdk
1. Makefile っぽいことをシェルコマンドでする
Makefileは便利ですが、ディレクトリ構造が複雑な場合(正規表現でも使わないと書けないときとか)など、自分でああいう動きをやりたいときがあります。
なんかMakeではソースより実行ファイルの方が新しいか確かめてる[要出典]って話を聞いたことがあるので、そのやりかたを使います。
シェルスクリプトでは、if [ $SOURCE -nt $BIN ]
でソースより実行ファイルの方が新しいかで分岐できるので
CURRDIR=$(pwd)
function is_updated()
{
SOURCE=# gonyogonyo ...
BIN=#gonyogonyo ...
if [ $SOURCE -nt $BIN ]
then
echo "ソースが更新された" >&2
return 0
else
return 1
fi
}
PRJECTS=$(./lsprj)
for prj in $PRJECTS;
do
PRNAME=$(./prjtoname $prj)
if $(is_updated $prj);
then
cd $PRNAME;
echo $PRNAME"をビルド"
stack build
cd $CURRDIR
else
echo $PRNAME"の更新なし"
fi
done
のようにしました。
プロジェクト毎にソースが更新されたか調べ、されていたならばビルド用の命令(ここではstack build
)を走らせ、されていなければ「更新なし」と表示させています。