haskell - 在哪里可以找到( 并运行),它是用 Cabal 沙箱编译的可执行文件?

  显示原文与译文双语对照的内容
0 0

我正在使用 Cabal 沙箱( 用 cabal sandbox init 设置) 编译我的myProgram.lhs 。 我使用了一种最简单的方法:


cabal exec -- ghc myProgram

或者( 在 Makefile 中有规则)


cabal exec -- make myProgram

之后,在源目录中出现 myProgram.o,但不是可执行的myProgram

如何运行生成的程序?


cabal exec --./myProgram

行不通

现在,我已经提出了一种测试它的简单方法:


cabal exec -- runghc myProgram.lhs

但我不喜欢这个。

你知道生成的可执行文件在哪里?

( 我还没有为我的项目创建任何 Cabal 文件。 我简单地用 ghc 编译程序并测试它,then--when需要自定义dependencies--I设置 Cabal sanbox并手动安装相依性。

时间: 原作者:

0 0

这实际上并不是 cabal exec的问题,而且它不是 !

我的历史

同时开始使用 Cabal 沙箱,我在源文件( myProgram.lhs ) 中显式地给了我的模块一个定制名称。 在这种情况下,只有一个裸的ghc ( 没有 cabal exec ) 也不会生成可以执行文件,因为 Cabal 输出中的解决方案是。 ( 我无法测试裸 ghc 命令,因为我有沙箱中的依赖项,所以模块不会编译) 。

说明

引用的解释,q&为:

我收到警告


output was redirected with -o, but no output will be generated because there is no main module.

Haskell 98报告中的引用:


A Haskell program is a collection of modules, one of which, by convention, must be called Main and must export the value main.

解决办法是什么呢

一种解决方法是将 -main-is MyProgram.main 加入 ghc 。 然后它生成可执行文件。

./myProgram 立即出现在我的源目录中,无论我是否调用


ghc -main-is MyProgram.main myProgram

或者


cabal exec -- ghc -main-is MyProgram.main myProgram

...