Shake-0.9 以下では、偽のターゲットは Shake の弱点と言えます。実行することはできますが、必要以上に冗長で手動です。以下にいくつかのオプションを示します。
インストール規則にファイルを生成させる
非常に簡単な解決策として、ルールwriteFile' "install" ""
の最後に追加するだけです。install
これによりダミー ファイルが生成されますが、変更のたびに再実行されmytarget
ます。要求されるたびに実行したい場合install
(偽の make のように) を追加するだけalwaysRerun
です。冗長なファイルを無視できる場合、これが最も簡単な解決策ですが、一流の偽のサポートが提供されます。
使用するaction
あなたは書ける:
main = shake shakeOptions $ do
action $ do
need ["mytarget"]
system' "ln" ["-s", "mytarget", "linkname"]
これは、すべてのビルドで実行されるアクションを宣言します。実際には、コマンドライン上にある場合にのみこれを実行したいinstall
ので、次のようにすることができます:
main = do
args <- getArgs
shake shakeOptions $ do
when ("install" `elem` args) $ action $ do
... install code ...
使用するshakeArguments
シェイクの新しいバージョンではshakeArgsWith
、関数を使用して次のように記述できます。
main = shakeArgsWith shakeOptions [] $ \_ targets ->
if "clean" `elem` targets then do
removeFiles "_make" "//*"
return Nothing
else return $ Just $ do
when ("install" `elem` targets) $ do
... install code ...
... other rules ...
want $ delete "install" targets
これにより、ターゲットの処理方法を完全に制御できるため、偽のターゲットよりもはるかに強力なことを行うことができますが、より多くの作業が必要になります。