gpt4 book ai didi

haskell - 如何在 .cabal 文件中为不同的目标使用两个不同的编译器?

转载 作者:行者123 更新时间:2023-12-02 02:43:06 24 4
gpt4 key购买 nike

当我跑 cabal build它使用一些 Haskell 编译器在我的 .cabal 文件中构建可执行文件和/或测试套件。

我可以控制哪个编译器用于不同的目标吗?理想情况下,我希望在同一个 .cabal 中使用 ghc 和 ghcjs 的单独构建目标文件。在我看来,有人可能想在同一个项目中使用 ghc 和 Hugs 或两个版本的 ghc。这是目前可能的吗?

此外,在运行 cabal build 时,cabal 如何决定使用哪种编译器? ?我看到我的 ~/.cabal/config 中有一个编译器选项文件,但将其从 ghc 更改为至 ghcjs并取消注释,似乎没有改变什么cabal build做。

最佳答案

要使用的编译器是在配置步骤期间(或在安装步骤的隐式配置步骤期间确定的,该步骤不与之前的配置步骤共享配置选项)。它也是由构建包的实体决定的,不受编写包的人的影响。可能发生在您身上的事情是之前的 cabal 构建隐式调用了配置步骤并选择了一个编译器; future 的构建将保留先前选择的编译器而不是停留在全局配置文件中的编译器。您可以通过简单地手动运行 cabal configure 来撤销它。再次。

有可能导致构建失败并导致错误的实现,例如

library
if impl(ghc)
buildable: False

将阻止 cabal 尝试使用 GHC 构建包。但是,这对于使用单独的编译器构建包的单独部分并不是很有用,因为 cabal 将拒绝安装包,除非它可以使用单个编译器构建整个包。

可能最好的方法是为应该由单独编译器构建的东西制作单独的包。

关于haskell - 如何在 .cabal 文件中为不同的目标使用两个不同的编译器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28071045/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com