如何在IntelliJ中使用Stack构建Haskell项目?

24

我正在使用Stack在命令行中设置、构建和运行Haskell项目。我想使用IntelliJ作为我的IDE,但在将Stack配置为我的构建工具时遇到了问题。

我按照Stack用户指南中的说明,在命令行上创建和运行了一个“Hello World”的Haskell程序。一切都运行得很好。

我已经在IntelliJ上安装了HaskForce插件。在Build, Execution, Deployment -> Compiler -> Haskell Compiler选项卡中,可以选择使用Stack或Cabal进行构建。我选择了用Stack进行构建,并进行了以下配置。

enter image description here

我可以使用Haskell Stack Run配置运行项目。控制台输出是正确的。

/Users/williammcneill/Library/Haskell/bin/stack exec hellohaskell-exe --
Hello, Haskell.

然而,我无法通过IDE重新构建该项目。例如,如果我更改输出文本并重新运行程序,则仍会看到原始的“Hello,Haskell”输出。Build->Make Project | Make Module | Rebuild Project都没有任何作用。

项目设置->Artifacts选项卡中没有列出任何内容,我也找不到在此处添加Haskell可执行文件的方法。

我的解决方法是,即使在从IDE进行编辑时,也要从命令行构建我的Haskell程序。

(对我来说,指定一个项目特定的stack.yaml文件路径在一般的Haskell编译器设置中看起来很奇怪,但那是我能想到使用Stack进行构建的唯一方法。)

如何设置IntelliJ以使用Stack构建Haskell项目?

ghc 7.10.3,stack 1.1.2,HaskForce 0.3-beta.33,IntelliJ IDEA Ultimate 2016.1.3,OS X 10.11.5


这是Haskforce 问题 282


这可能对你有所帮助, https://gist.github.com/androidfred/a2bef54310c847f263343c529d32acd8 - Pratik Ambani
2个回答

17
如果您想点击IntelliJ的运行按钮来运行项目并使用Stack,我认为您应该像@mrek所说的那样使用IntelliJ Haskell插件。 目前,HaskForce插件指出:

注意:目前不支持针对stack的运行配置。 这仅适用于cabal项目。

所有安装说明(从安装Stack到项目设置)都在readme中,但我需要稍微修改一下,因此将我的版本放在这里。

为所有希望使用Haskell的人提供的安装说明

  1. 安装IntelliJ-Haskell插件,我建议从GitHub上安装最新的beta版本。
  2. 安装Stack,可以在它们的文档中找到说明(向下滚动以找到您特定的操作系统)。
  3. 在终端/命令提示符中运行stack install hindentstack install stylish-haskell(这可能需要一些时间)。
  4. 重新启动计算机。
  5. 在IntelliJ中创建一个新的类型为“Haskell 模块”的项目,选择Stack二进制文件(可能是C:\Users\username\AppData\Roaming\local\bin\stack.exe或者/usr/bin/stack),并设置为默认(如果尚未默认)。
    • 您还可以通过"文件 | 新建 | 从现有资源导入项目",并从Haskell Stack中进行导入,导入现有的Stack项目。
  6. 打开File | Settings | Appearance | Notifications | Haskell Log,启用额外日志输出。当某些操作需要很长时间时,您可以在此处查看进度(底部右侧,事件日志)。
  7. 应该会有一个名为app/Main.hs的文件。您可以将其中所有内容替换为main = putStrLn "Hello Haskell!"
  8. 现在按照@mrek的建议:创建一个运行配置Haskell Stack | Haskell Stack Runner,并运行它。您应该能够看到hello消息。
  9. 更好的是,回答原始问题:当你改变消息并再次运行时,输出就会改变!
  10. 同样地,您可以创建一个测试运行配置(Haskell Stack Tester)来运行您的测试。

您可以通过单击IntelliJ底部的终端,然后运行stack ghci来启动交互式控制台。当您键入main时,您正在调用主函数,以此类推。 您也可以使用stack test而不是测试运行配置。


7

假设您已经安装了IntelliJ Haskell插件

  1. 进入 Run -> Edit Configurations -> Haskell Stack -> Haskell Stack Runner

enter image description here

  1. 设置配置的名称。可执行文件名应该会自动添加。然后按下OK。

enter image description here

现在,您应该能够构建项目。

输出:

/usr/local/bin/stack build --exec test-project-exe 它正常工作!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接