cabal 配置文件中的路径变量

Path variables in cabal configuration file

在 Windows,我想更改 cabal 的默认每用户安装目录。 config 文件的相关部分是:

install-dirs user
  prefix: C:\path\to\my\folder
  -- bindir: $prefix\bin
  -- libdir: $prefix
  -- libsubdir: $abi$libname
  -- libexecdir: $prefix$libname
  -- datadir: $prefix
  -- datasubdir: $abi$pkgid
  -- docdir: $datadir\doc$abi$pkgid
  -- htmldir: $docdir\html
  -- haddockdir: $htmldir
  -- sysconfdir: $prefix\etc

什么是 $abi$pkgid ?它们未在 config 文件中定义。 cabal 这些变量(哪些)有默认值? How/where 我可以定义它们吗?

编辑

@Sibi 的回答很完美。为了完善资料,我还修改了这些参数:

remote-repo-cache: C:\path\to\my\folder\packages
logs-dir: C:\path\to\my\folder\logs
world-file: C:\path\to\my\folder\world
build-summary: C:\path\to\my\folder\logs\build.log

您可以参考 here 了解更多详情。

$abi对应AbiVar类型。

$pkgid对应PkgIdVar类型。

它们没有在配置文件中定义。它们将在构建步骤中由 Cabal 生成,具体取决于您的体系结构等。您可以 see this guide 了解安装路径。

对于我的 Linux 系统,它们的值为:

$abi 是 x86_64-linux-ghc-7.10.3

$pkgid 指的是包名称及其版本。示例:array-1.2.3.4

但是如果您想更改位置,我的建议是只更改 prefix 路径,因为那是根安装文件夹。其他一切都将与此相关。