[英]Building with runtime flags using cabal and ghc
我有一個用 Haskell 編寫的程序,打算用 GHC 編譯。 該程序在多核上的擴展性非常好,因此啟用多線程非常重要。 在我的.cabal
文件中,我添加了ghc-options: -O3 -threaded
以與線程運行時鏈接。 問題是,使用這種方法,用戶需要使用foo +RTS -N
運行程序,這似乎有點神秘,而且對用戶不太友好。
如何告訴 cabal/ghc 對用戶不可見地啟用這些運行時標志? 我已經閱讀過--with-rtsopts
,但是當我嘗試使用 GHC (7.0.3) 時,它只會吐出unrecognized flag
。
該標志是-with-rtsopts
,而不是--with-rtsopts
,因此您應該將-with-rtsopts=-N
添加到 ghc-options 字段。 GHC 標志參考。
請注意,這還需要您通過將-rtsopts
添加到 ghc-options 來鏈接運行時支持。
如果您碰巧使用hpack
從package.yaml
生成foo.cabal
,則使用 YAML 語法:
executables:
foobar:
main: Main.hs
source-dirs: app
ghc-options:
- -threaded
- -rtsopts
- '"-with-rtsopts=-N -T"'
- -Wall
dependencies:
[…]
字符串"-with-rtsopts=-N␣-T"
應該成為最終ghc
進程的一個argv 項。
由於 YAML 也引用了字符串文字 - escaping 的兩層都是必需的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.