2011-06-28 70 views
29

我有一個用Haskell編寫的程序,打算用GHC編譯。該程序在多核上可以很好地擴展,因此啓用多線程非常重要。在我的.cabal文件中,我添加了ghc-options: -O3 -threaded來與線程運行時鏈接。問題是,用這種方法,用戶需要運行程序foo +RTS -N,這看起來有點神祕,並不是非常用戶友好。使用cabal和ghc編譯運行時間標記

如何告訴cabal/ghc將這些運行時標誌隱藏給用戶?我已閱讀--with-rtsopts,但當我嘗試使用它時,GHC(7.0.3)只是吐出了unrecognized flag

回答

28

該標誌爲-with-rtsopts,而不是--with-rtsopts,因此您應該將-with-rtsopts=-N添加到ghc-options字段。 GHC Flag Reference.

請注意,這還需要您通過將-rtsopts添加到ghc選項來鏈接運行時支持。

+0

謝謝,這幫了我!我也試着用'-with-rtsopts =「 - N -g1」'來啓用'-g1'標誌,但是後來我得到'無法識別的標誌:-g1'。 '-N'和'-g1'分開工作。 –

+1

@Viktor Dahl:我認爲引號引起了問題。嘗試使用單引號或多個「-with-rtsopts」行。如果解決了這個問題,它可能是一個ghc錯誤(或文檔錯誤)。 –

+7

單引號沒有解決它,但使用兩個'-with-rtsopts'。 –