如何删除无法构建的目标?
How to delete unbuildable goal?
我想删除不再有源但没有清理的文件。
是否支持部分清理增量构建?在这种情况下,我想我可以与以前构建中使用的一组源文件进行比较,并定义如何清理那些已经消失的文件。
main = shakeArgs shakeOptions { shakeVerbosity = Diagnostic } $ do
want [".build"]
phony ".build" $ do
files <- getDirectoryFiles "." ["//*.txt"]
let goals = map (-<.> "") files
need goals
"*" %> \out -> do
Stdout o <- cmd $ "sort " ++ (out ++ ".txt")
writeFile' out o
使用 shakeArgsPrune
您可以定义一个函数,该函数随后会传递实时文件。然后你可以这样写:
import Development.Shake
import Development.Shake.FilePath
import Development.Shake.Util
import System.Directory.Extra
import Data.List
import System.IO
pruner :: [FilePath] -> IO ()
pruner live = do
present <- listFilesRecursive "output"
mapM_ removeFile $ map toStandard present \ map toStandard live
main :: IO ()
main = shakeArgsPrune shakeOptions pruner $ do
... rules go here ...
这会删除 output
中的所有文件,这些文件不是根据当前的构建系统生成的和最新的。有关完整示例,请参见
http://neilmitchell.blogspot.co.uk/2015/04/cleaning-stale-files-with-shake.html.
shakeArgsPrune
功能仅在shake-0.15.1及以上版本可用,但基于shakeLiveFiles
功能已可用更长时间,如果您愿意,可以直接使用.
我想删除不再有源但没有清理的文件。
是否支持部分清理增量构建?在这种情况下,我想我可以与以前构建中使用的一组源文件进行比较,并定义如何清理那些已经消失的文件。
main = shakeArgs shakeOptions { shakeVerbosity = Diagnostic } $ do
want [".build"]
phony ".build" $ do
files <- getDirectoryFiles "." ["//*.txt"]
let goals = map (-<.> "") files
need goals
"*" %> \out -> do
Stdout o <- cmd $ "sort " ++ (out ++ ".txt")
writeFile' out o
使用 shakeArgsPrune
您可以定义一个函数,该函数随后会传递实时文件。然后你可以这样写:
import Development.Shake
import Development.Shake.FilePath
import Development.Shake.Util
import System.Directory.Extra
import Data.List
import System.IO
pruner :: [FilePath] -> IO ()
pruner live = do
present <- listFilesRecursive "output"
mapM_ removeFile $ map toStandard present \ map toStandard live
main :: IO ()
main = shakeArgsPrune shakeOptions pruner $ do
... rules go here ...
这会删除 output
中的所有文件,这些文件不是根据当前的构建系统生成的和最新的。有关完整示例,请参见
http://neilmitchell.blogspot.co.uk/2015/04/cleaning-stale-files-with-shake.html.
shakeArgsPrune
功能仅在shake-0.15.1及以上版本可用,但基于shakeLiveFiles
功能已可用更长时间,如果您愿意,可以直接使用.