rya*_*ntm 5 haskell cabal ghcjs
当我运行cabal build
它时,使用一些Haskell编译器在我的.cabal文件中构建可执行文件和/或测试套件.
我可以控制哪个编译器用于不同的目标吗?理想情况下,我希望在同一个.cabal
文件中使用单独的构建目标ghc和ghcjs .在我看来,有人可能想在同一个项目中使用ghc和拥抱或两个版本的ghc.这目前可能吗?
另外,cabal如何决定运行时使用的编译器cabal build
?我看到我的~/.cabal/config
文件中有一个编译器选项,但将其更改ghc
为ghcjs
取消注释,并没有改变cabal build
它的作用.
要使用的编译器是在配置步骤期间(或在安装步骤的隐式配置步骤期间确定的,该步骤不与先前的配置步骤共享配置选项)。它也由构建包的实体决定,并且不受编写包的人的影响。您可能遇到的情况是,之前的 cabal 构建隐式调用了配置步骤并选择了编译器;未来的版本将保留以前选择的编译器,而不是停留在全局配置文件中的编译器。您可以通过简单地cabal configure
再次手动运行来取消该命令。
错误的实现可能会导致构建失败,例如
library
if impl(ghc)
buildable: False
Run Code Online (Sandbox Code Playgroud)
将阻止 cabal 尝试使用 GHC 构建软件包。然而,这对于使用单独的编译器构建包的单独部分并不是真正有用,因为 cabal 将拒绝安装包,除非它可以使用单个编译器构建整个包。
也许最好的方法是为应该由单独的编译器构建的东西制作单独的包。