Haskell Cabal将当前包安装到自己的.Cabal sandbox/*-packages.conf.d中
我有一个名为Haskell Cabal将当前包安装到自己的.Cabal sandbox/*-packages.conf.d中,haskell,cabal,Haskell,Cabal,我有一个名为commands的包。我想将其安装到自己的沙箱中,例如.cabal sandbox/x86_64-osx-ghc-7.8.3-packages.conf.d/commands-0.0.0-f3f84f48f42ac74a69ee5fd73512bfd0.conf。目前,对于一个模块命令,只有一个.hi接口文件,我不知道它是如何到达那里的 我尝试了cabal安装命令,逻辑是“我认为其他软件包就是这样到达那里的”,但在未知软件包的情况下失败了 我还尝试了使用ghc-pkg之类的东西,比如
commands
的包。我想将其安装到自己的沙箱中,例如.cabal sandbox/x86_64-osx-ghc-7.8.3-packages.conf.d/commands-0.0.0-f3f84f48f42ac74a69ee5fd73512bfd0.conf
。目前,对于一个模块命令
,只有一个.hi
接口文件,我不知道它是如何到达那里的
我尝试了cabal安装命令
,逻辑是“我认为其他软件包就是这样到达那里的”,但在未知软件包的情况下失败了
我还尝试了使用ghc-pkg
之类的东西,比如ghc-pkg更新命令-f.cabal sandbox/x86_64-osx-ghc-7.8.3-packages.conf.d
,但我没有正确使用它们。理想情况下,我想和阴谋集团合作
我最后尝试的是ghc-idist/build/
,但它抱怨接口文件中的包名不同,command与main(“与接口文件中的名称不同…”)。如果我用ghc-package name commands-0.0.0
伪造可执行文件的包,链接器会抱怨它找不到符号\ZCMain\u main\u closure
,因为每个可执行文件都需要包main
中模块main
中的函数main
我相信有更好的办法
我遵循了我的阴谋集团文件的在线示例:
$ cat commands.cabal
name: commands
library
exposed-modules: Commands.Types, Commands.Bits
...
最小失败代码示例如下所示:
$ cat Main.hs
import Commands.Types
main = return ()
在根项目目录中
上下文:我需要使用make
(而不是cabal
)构建我的可执行文件,因为它链接到外部代码(Objective-C通过language-C-inline)。我的makefile:)。因此,我必须显式地编译脚本。我不知道如何用cabal编译可执行文件
,但我希望cabal构建、测试和管理我的库
通过将包放入沙箱,我将能够通过使用cabalexec--ghc
进行编译,从脚本导入其模块。我还可以至少在脚本中包含额外的源文件,并且知道它可以工作。以下是我尝试的内容:
首先取消注册任何以前的命令库。尝试
ghc pkg--全局注销命令
在沙盒中安装新命令。
从沙盒目录中,尝试以下操作:
cabal--启用共享--禁用文档--前缀=./install/path/to/your/library/source
请注意前缀规范。我将其核化(rm-fr.cabal sandbox/
),重新安装了所有内容(cabal安装-仅依赖项
),将其自身添加为源(cabal sandbox add source.
),安装了它(cabal install命令
)。然后使
工作。idk…您能解释一下第一个和第三个选项的作用吗?--prefix=./在cabal install 1.22.6.0.1(cabal library 1.22.4.0,ghc 7.8.3)上运行失败。但是,该命令使用--prefix=ommitted。