标签: cabal

使用cabal和ghc构建运行时标志

我有一个用Haskell编写的程序,打算用GHC编译.该程序在多个内核上可以很好地扩展,因此启用多线程非常重要.在我的.cabal文件中,我添加ghc-options: -O3 -threaded了与线程运行时的链接.问题是,使用这种方法,用户需要运行程序foo +RTS -N,这似乎有点神秘,不是非常用户友好.

如何告诉cabal/ghc为用户隐藏这些运行时标志?我已经读过了--with-rtsopts,但GHC(7.0.3)只是unrecognized flag在我尝试使用时吐出来.

haskell build ghc cabal

29
推荐指数
1
解决办法
8510
查看次数

如何使用Stack安装/使用本地版本的软件包?

情况是,我正在尝试使用Stack安装Netwire.但是,最新的netwire 5.0.1存在一个问题,正如dhobbs报道的那样:http://hub.darcs.net/ertes/netwire/issue/13

由于我不知道何时会解决问题,我下载了回购并自行进行了更改.但是,我不明白如何安装这样的本地修补版本.stack install没有安装到~/.stack.有没有人有想法?

更新

现在我正在使用Stack开发一些其他库.如何让另一个项目使用该库?硬编码相对路径看起来非常难看.

haskell package cabal haskell-stack

29
推荐指数
1
解决办法
4448
查看次数

有没有办法为cabal依赖项定义标志?

我最近遇到了一个Cabal问题,我只是通过在运行我的项目之前手动安装我的cabal沙箱中transformers-compat-f transformers3标志来解决这个问题cabal install.

有没有办法在我的应用程序的.cabal文件中指出我依赖于库,以便它使用特定的构建标志构建?

haskell cabal

28
推荐指数
5
解决办法
2857
查看次数

消除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 cabal

27
推荐指数
1
解决办法
447
查看次数

Haskell Stack从github安装包依赖

是否可以使用Haskell堆栈从github安装包的版本?

例如,在一个.cabal或一个stack.yaml文件中,如何在git repo/branch/revision中指向依赖?

haskell github dependency-management cabal haskell-stack

27
推荐指数
2
解决办法
4723
查看次数

.cabal文件语法的完整定义

我已经广泛搜索了,虽然我可以找到很多cabal文件的例子以及很好的教程,但我希望对.cabal文件格式有一个正确的语法定义.唉,我一直都找不到.最近的cabal文档仅提到它的文件格式是向后兼容的 - 没有链接到它与之兼容的'原始'格式!没有用.

haskell cabal

26
推荐指数
2
解决办法
1925
查看次数

26
推荐指数
1
解决办法
4133
查看次数

使用Haddock和堆栈为我自己的代码生成文档

我已经用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)

但后来我得到一个错误,它无法找到文件依赖的模块(由堆栈本地安装).这让我觉得文档生成必须以某种方式通过堆栈.我已经找了,但没有真正找到任何与配置文档.cabalstack.yaml文件相关的解释.

TL; DR

如何使用stack和Haddock为我自己的包中的代码生成文档?

haskell cabal haddock haskell-stack

26
推荐指数
2
解决办法
3679
查看次数

Haddock,Cabal:如何包含源代码示例?

我是操作包的作者,其中包括示例代码.我想这个示例代码是hscolored并与由Haddock生成的API文档一起安装.

我可能必须使用自定义Cabal构建类型并为Haddock阶段创建用户钩子.但是,我从未设法做到这一点.因此,我的问题是:

如何将完整模块作为示例代码包含在Haddock中?

你能给出一个Cabal用户钩子的例子,它将hscolor应用于另一个源代码文件example.hs并将结果与​​生成的Haddock文档连接起来吗?

haskell documentation-generation cabal haddock

25
推荐指数
1
解决办法
1704
查看次数

如何将自定义对象文件与Haskell库链接?

我已经创建了一个Haskell包,它使FFI调用CUDA代码中定义的函数.我想在包构建期间将.cu文件编译为对象(.o)文件,并强制链接器将其链接到.

到目前为止,我试图用一种技术发现这个问题.我已经定制buildHook到:

  1. 运行nvcc
  2. 运行默认的buildHook
  3. 使用nvcc编译代码创建ar库文件.

Setup.hs可在此处获得.

该解决方案在将该包限制为静态链接方面具有主要缺点.尽管cabal生成了一个共享库,但它无法工作,因为它无法解析位于目标文件中的符号.

在构建期间是否有更简单的方法来链接自定义代码?

linker haskell ffi cabal

25
推荐指数
1
解决办法
964
查看次数