如何从 Haskell Stack build 编译可执行文件?
How to compile an executable from Haskell Stack build?
|-aseCswk2
|-app
|-Main.hs
|-src
|-Libs.hs
|-test
|-Spec.hs
|-aseCswk2.cabal
|-Setup.hs
|-package.yaml
...
所以我有一个 Haskell 项目,该项目使用 Stack 构建系统,其布局如上例所示。如果我使用 $ stack test
,那么我的 Libs.hs 文件中的函数将使用我的 Spec.hs 文件中的案例进行测试。如果我使用 $ stack build
那么我的文件构建成功并且我可以使用 $ stack ghci
中的函数。
但是,我想创建我的 Main.hs 文件的可执行文件,但不知道如何实现。我尝试在应用程序目录中使用 $ ghc Main.hs
编译它,但收到一条错误消息 'Failed to load interface for Lib',即使我已将其作为导入包含在内。我也试过 $stack build aseCswk2:exe:aseCswk2-exe
但没有 .o
文件被创建到 运行.
Haskell-stack 在隐藏的 .stack-work
目录中构建可执行文件。您可以找到 stack
使用的二进制文件的位置:
$ stack <b>path --local-install-root</b>
/haskell/app/.stack-work/install/x86_64-linux/3fa5b3c3fbcd473981eef72c68d572129654cbb7c23af146b50d90e29c41b62f/8.6.5
在该目录中,如果您构建应用程序,则会有一个已构建的二进制文件所在的 bin/
目录。
您还可以 运行 应用程序:
$ stack <b>run</b>
|-aseCswk2
|-app
|-Main.hs
|-src
|-Libs.hs
|-test
|-Spec.hs
|-aseCswk2.cabal
|-Setup.hs
|-package.yaml
...
所以我有一个 Haskell 项目,该项目使用 Stack 构建系统,其布局如上例所示。如果我使用 $ stack test
,那么我的 Libs.hs 文件中的函数将使用我的 Spec.hs 文件中的案例进行测试。如果我使用 $ stack build
那么我的文件构建成功并且我可以使用 $ stack ghci
中的函数。
但是,我想创建我的 Main.hs 文件的可执行文件,但不知道如何实现。我尝试在应用程序目录中使用 $ ghc Main.hs
编译它,但收到一条错误消息 'Failed to load interface for Lib',即使我已将其作为导入包含在内。我也试过 $stack build aseCswk2:exe:aseCswk2-exe
但没有 .o
文件被创建到 运行.
Haskell-stack 在隐藏的 .stack-work
目录中构建可执行文件。您可以找到 stack
使用的二进制文件的位置:
$ stack <b>path --local-install-root</b>
/haskell/app/.stack-work/install/x86_64-linux/3fa5b3c3fbcd473981eef72c68d572129654cbb7c23af146b50d90e29c41b62f/8.6.5
在该目录中,如果您构建应用程序,则会有一个已构建的二进制文件所在的 bin/
目录。
您还可以 运行 应用程序:
$ stack <b>run</b>