我有一个用Haskell编写的程序,打算用GHC编译.该程序在多个内核上可以很好地扩展,因此启用多线程非常重要.在我的.cabal文件中,我添加ghc-options: -O3 -threaded了与线程运行时的链接.问题是,使用这种方法,用户需要运行程序foo +RTS -N,这似乎有点神秘,不是非常用户友好.
如何告诉cabal/ghc为用户隐藏这些运行时标志?我已经读过了--with-rtsopts,但GHC(7.0.3)只是unrecognized flag在我尝试使用时吐出来.
情况是,我正在尝试使用Stack安装Netwire.但是,最新的netwire 5.0.1存在一个问题,正如dhobbs报道的那样:http://hub.darcs.net/ertes/netwire/issue/13
由于我不知道何时会解决问题,我下载了回购并自行进行了更改.但是,我不明白如何安装这样的本地修补版本.stack install没有安装到~/.stack.有没有人有想法?
更新
现在我正在使用Stack开发一些其他库.如何让另一个项目使用该库?硬编码相对路径看起来非常难看.
我最近遇到了一个Cabal问题,我只是通过在运行我的项目之前手动安装我的cabal沙箱中transformers-compat 的-f transformers3标志来解决这个问题cabal install.
有没有办法在我的应用程序的.cabal文件中指出我依赖于库,以便它使用特定的构建标志构建?
我的.cabal文件的许多节中经常有类似的属性.例如
Library x
...
ghc-options:
-O2 -Wall -fno-warn-missing-signatures -fwarn-incomplete-patterns
-fno-warn-name-shadowing
Executable y
...
ghc-options:
-O2 -Wall -fno-warn-missing-signatures -fwarn-incomplete-patterns
-fno-warn-name-shadowing
Run Code Online (Sandbox Code Playgroud)
保持一致是繁琐且容易出错的.有没有更好的办法?
甚至更棘手的是当字段相似但不完全相同时,例如当我有几个具有共同构建依赖性但是变化很小的可执行文件时.
是否可以使用Haskell堆栈从github安装包的版本?
例如,在一个.cabal或一个stack.yaml文件中,如何在git repo/branch/revision中指向依赖?
我已经广泛搜索了,虽然我可以找到很多cabal文件的例子以及很好的教程,但我希望对.cabal文件格式有一个正确的语法定义.唉,我一直都找不到.最近的cabal文档仅提到它的文件格式是向后兼容的 - 没有链接到它与之兼容的'原始'格式!没有用.
升级到OSX Mavericks后,为什么我的GHC 7.6.3不起作用?
我已经用Haddock样式注释了我的代码,并希望生成可浏览的文档.由于我也使用堆栈,我想将文档生成集成到工作流程中.但是,我还没有能够产生任何有用的东西.
我可以跑
stack haddock
Run Code Online (Sandbox Code Playgroud)
它将生成我想要的样式的文档(深入内部~/.stack/),但它似乎只生成我依赖的包的文档,而不是我自己的代码.
我跑的时候
stack haddock --help
Run Code Online (Sandbox Code Playgroud)
我得到的印象是,我可以使用附加参数--haddock为我自己的项目生成文档,并--no-haddock-deps省略我的依赖项的文档.但是,当我跑
stack haddock --haddock --no-haddock-deps
Run Code Online (Sandbox Code Playgroud)
似乎什么也没发生.如果我stack clean首先它将重新编译我的所有代码,但没有生成输出,似乎以任何方式与文档相关.
作为一个中间解决方案,我也试过自己运行Haddock,即
haddock my-source.hs
Run Code Online (Sandbox Code Playgroud)
但后来我得到一个错误,它无法找到文件依赖的模块(由堆栈本地安装).这让我觉得文档生成必须以某种方式通过堆栈.我已经找了,但没有真正找到任何与配置文档.cabal和stack.yaml文件相关的解释.
TL; DR
如何使用stack和Haddock为我自己的包中的代码生成文档?