如何使用兩種不同配置構建一組源文件,而無需重新構建所有內容?並行處理多個構建配置
我當前的設置添加了一個選項--config = rel,它將加載build_rel.cfg中的所有選項並將所有選項編譯到目錄build_rel /。
data Flags = FlagCfg String
deriving (Show, Eq)
flags = [Option ['c'] ["config"]
(ReqArg (\x -> Right $ FlagCfg x) "CFG")
"Specify which configuration to use for the build"]
main :: IO()
main = shakeArgsWith shakeOptions { shakeChange=ChangeModtimeAndDigest }
flags $
\flags targets -> return $ Just $do
let buildDir = "build" ++
foldr (\a def -> case (a, def) of
(FlagCfg cfg, "") -> '_':cfg
otherwise -> def)
"" flags
-- Settings are read from a config file.
usingConfigFile $ buildDir ++ ".cfg"
...
如果我再運行
build --config=rel
build --config=dev
我將結束與兩個版本
build_rel/
build_dev/
但是,每次我切換配置的時候我結束了重建一切。我猜這是因爲我所有的神諭都「改變了」。我希望所有的ORACLE都針對我的兩個不同的構建目錄,以便更改不會影響使用不同配置的構建。
我知道有一個-m選項來指定數據庫應該存儲在哪裏,但我寧願不必指定兩個必須同步所有時間的選項。
build --config=rel -m build_rel
有沒有辦法在解析--config選項後更新選項shakeFiles?
另一個想法是參數化我所有的Oracle以包括我的構建配置,但後來我注意到usingConfigFile使用Oracle,我也必須重新實現。看起來笨重。
有沒有其他的方式來建立多個目標而無需重建所有東西?這似乎是一件微不足道的事情,但我依然無法弄清楚。如果你想在兩個目錄是完全無關的,與他們無關之間共享,然後改變數據庫以及最有意義
單獨的數據庫
:
我提出了第一個問題的票在https://github.com/ndmitchell/shake/issues/535 –
目前我去了單獨的數據庫。 – nesqi