簡體   English   中英

使用 cabal 和 ghc 構建運行時標志

[英]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 來鏈接運行時支持。

如果您碰巧使用hpackpackage.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM