[英]Haskell - adding a package from source to a Yesod project
我找到了一个很好的音频库来处理服务器端的音频,但是实际上在将它作为yesod的一部分时遇到了麻烦(也许是因为我不太了解cabal / stack)。
我正在尝试包含此模块Sound.File.Sndfile
并且已经从此处http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.27.tar.gz下载了其源文件。 完成该步骤有哪些步骤?
编辑
我尝试执行此步骤
runhaskell Setup.hs configure --ghc
runhaskell Setup.hs build
runhaskell Setup.hs install
但是它没有Setup.hs
文件。
编辑2
我已经添加了Alexis King建议的依赖项hsndfile
,但是在hsndfile
时出现以下错误:
[ 1 of 59] Compiling Enums ( Enums.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.7.0/build/Enums.o )
<command line>: can't load .so/.DLL for: libsndfile.so (libsndfile.so: cannot open shared object file: No such file or directory)
-- While building package Fastwork-0.0.0 using:
/home/geppetto/.stack/setup-exe-cache/x86_64-linux/setup-Simple-Cabal-1.22.7.0-ghc-7.10.3 --builddir=.stack-work/dist/x86_64-linux/Cabal-1.22.7.0 build lib:Fastwork exe:Fastwork --ghc-options " -ddump-hi -ddump-to-file"
Process exited with code: ExitFailure 1
我已经下载了libsndfile-1.0.25.tar.gz
并将其libsndfile-1.0.25.tar.gz
压缩,然后运行./configure、make、make install。 当我尝试在Yesod项目中再次进行stack build
时,错误是相同的。 我想念什么?
有什么理由不能使用Hackage上的任何这些库 ? 如果您使用的是实际软件包目录中的软件包,而不是仅使用tarball,则可能会更容易,更安全,更可预测。
如果您确实要使用找到的该库,并且正在使用堆栈,则可以将其添加到stack.yaml
文件的packages
部分:
packages:
- '.'
- location: http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.27.tar.gz
extra-dep: true
然后,您可以将对libsndfile
的依赖项添加到您的.cabal
文件中。 但是,我会谨慎地依赖于来自任意URL的软件包,因此,至少,我可能会下载该软件包并将其解压缩。 然后,您可以仅指向本地路径而不是远程URL:
packages:
- '.'
- location: ./some/path/to/libsndfile
extra-dep: true
有关更多信息,请参见stack.yaml
文件的文档 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.