微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在不安装的情况下编译haskell包?

如何解决如何在不安装的情况下编译haskell包?

https://github.com/koalaman/shellcheck

我可以使用 cabal install 安装上述软件包。但我想运行原始 ghc 命令,无需安装即可编译二进制文件

有人能告诉我怎么做吗?

解决方法

首先,您需要安装所有依赖项,您可以使用 cabal install --dependencies-only 来完成。然后你需要创建一个包含内容的文件 Paths_ShellCheck.hs

module Paths_ShellCheck where
import Data.Version
version = Version [0,7,2] []

然后就可以使用这个GHC命令了:

ghc \
  --make \
  -O \
  -package-db ~/.cabal/store/ghc-8.10.4/package.db \
  -hide-all-packages \
  -package regex-tdfa \
  -package parsec \
  -package containers \
  -package base \
  -package deepseq \
  -package mtl \
  -package QuickCheck \
  -package array \
  -package aeson \
  -package bytestring \
  -package Diff \
  -package filepath \
  -package directory \
  src/ShellCheck/*.hs \
  src/ShellCheck/*/*.hs \
  Paths_ShellCheck.hs \
  shellcheck.hs

这将构建可执行文件 shellcheck。请注意,这是专门针对 GHC 8.10.4 的,如果您想使用其他 GHC 版本,可以更改它。

如果您甚至不想运行 cabal install --dependencies-only 那么最简单的方法可能是复制所有依赖项的所有 *.hs 源文件,将它们添加到最后的 globs 中,并删除相应的-package ... 参数。您或许可以保留与 GHC 捆绑的包:即 base、deepseq、mtl、容器、数组、字节串、文件路径、解析和目录。这样就剩下 Diff、aeson、QuickCheck 和 regex-tdfa 及其传递依赖项了。

,

这是通常的方式。第一步是获取代码的副本。这两个中的一个可以做到:

% git clone https://github.com/koalaman/shellcheck
% cabal unpack shellcheck

进入包含代码的目录后,您可以使用 cabal 命令而不是 build 命令要求 install 构建它而不安装它。

% cabal build

如果您想查看 cabal 为此任务调用的子命令序列,您可以通过增加详细程度来要求它显示它们。

% cabal build -v3

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。