使用Cabal(Haskell)从环境变量控制GHC构建选项

时间:2013-07-14 11:46:44

标签: haskell compilation environment-variables ghc cabal

是否可以使用Cabal构建Haskell项目并从环境变量控制GHC标志?

在我的project.cabal文件中有一个“GHC-Options”部分,它控制着标志,但我很乐意从命令行中另外设置它们。

2 个答案:

答案 0 :(得分:1)

如果您只有开/关标志,则应使用Cabal flags

答案 1 :(得分:0)

在阴谋文件的顶层使用build-type: Configure

编写一个configure脚本(即,位于程序包顶层的名为“ configure”的shell脚本-不必是自动工具样式)。它应该读取环境变量,并生成一个名为 package .buildinfo的文件,并适当替换“ package ”。

该文件的格式理论上在Cabal用户指南中描述。该文件应仅包含Cabal用户指南第3.3.2.9节中所述的构建信息字段。即build-dependsother-moduleshs-source-dirsdefault-extensionsother-extensionsextensionsbuild-tool-dependsbuild-toolsbuildableghc-optionsghc-prof-optionsghc-shared-optionsincludesinstall-includesinclude-dirsc-sources,{ {1}},cxx-sourcesasm-sourcescmm-sourcesjs-sourcesextra-librariesextra-ghci-librariesextra-bundled-libraries,{{1 }},extra-lib-dirscc-optionscpp-optionscxx-optionsld-optionspkgconfig-dependsframeworks字段中缩进部分。它们不必缩进。这些将与cabal文件的extra-frameworks-dirs部分中的等效字段合并。 (《用户指南》介绍了可以包含mixins个部分的功能,但我现在无法使其正常工作。)

因此,如果您希望代码中的字符串反映library的内容,请设置cabal文件并编写如下配置脚本:

executable

然后您可以编写一个.hs文件

$PATH

Cabal用户指南:https://www.haskell.org/cabal/users-guide/developing-packages.html