我最近遇到了一个Cabal问题,我只是通过在运行我的项目之前手动安装我的cabal沙箱中transformers-compat 的-f transformers3标志来解决这个问题cabal install.
有没有办法在我的应用程序的.cabal文件中指出我依赖于库,以便它使用特定的构建标志构建?
Mik*_*kov 15
看起来无法通过文件中的build-depends字段指定此类依赖项.cabal.buildDepends被定义为[Dependency],在哪里data Dependency = Dependency PackageName VersionRange.但是你可以使用cabal install --constraint="transformers-compat +transformers3".
查看该transformers-compat.cabal文件,我认为如果您transformers适当地约束您的依赖关系,解算器应该能够找出正确的标志分配.例如,build-depends: transformers >= 0.3 && < 0.4应强制求解器选择transformers-compat +transformers3.如果这不起作用,则可能是解算器中的错误.
一种方法是使用Stack.编辑您stack.yaml的包含
flags:
transformers-compat:
transformers3: true
Run Code Online (Sandbox Code Playgroud)
另见标志部分.
小智 8
惊天动地的新版本让你指定的约束在您的cabal.project.local或cabal.project文件.例如:
constraints: hmatrix +openblas
Run Code Online (Sandbox Code Playgroud)
有没有办法在我的应用程序的.cabal文件中指出我依赖于库,以便它使用特定的构建标志构建?
不,但在你的情况下,这实际上并不是解算器中的一个问题,而是相当无意义的错误(由某人不太明智地使用标志引起).
cabal现在支持一种类似于通过配置选项来执行此操作stack的优雅方法cabal.project。
package transformers-compat
flags: +transformers3
Run Code Online (Sandbox Code Playgroud)
将在构建包时添加该标志。transformers3transformers-compat