1

シェイクで並列ビルドを使用すると、次のような不正な形式の出力が得られます。

[»] Compiling src/Game/Game.cpp
[»] Compiling [»] Compiling [»] Compiling src/Graphics/Image/Png/PngLoader.cpp
src/Main.cpp
src/System/HeartBeat.cpp
[»] Compiling src/Window/Window.cpp
[»] Compiling src/Window/GlfwContext.cpp

印刷との何らかの同期の問題だと思います。出力コマンドとして次を使用していることに注意してください。

shakeOutput = const $ BS.putStr . BS.pack

ステータス メッセージの印刷セクションのルールは次のようになります。

liftIO $ setSGR [SetColor Foreground Vivid Green]
putNormal "[\175] Compiling "
liftIO $ setSGR [SetColor Foreground Vivid Yellow]
putNormal $ c ++ "\n"
liftIO $ setSGR [Reset]

シェイクに組み込まれた出力で、そのような印刷の問題を回避する方法はありますか? そうでない場合、印刷コードがシェイクルール内にあることを知って、どの種類の haskell 同期化メソッドを使用するのが適切でしょうか?

4

2 に答える 2

0

私のアプローチは、リソースを使用することでした:

con <- newResource "Console" 1
let withConsole = withResource con 1 . liftIO
于 2016-02-20T15:41:32.800 に答える