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

时间:2016-06-10 18:26:53

标签: haskell intellij-idea haskell-stack

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

我使用Stack按照堆栈User Guide中的说明在命令行上创建并运行“Hello,World”Haskell程序。一切都很好。

我在IntelliJ上安装了HaskForce插件。构建,执行,部署 - >编译器 - > Haskell编译器选项卡为您提供了使用Stack构建和使用Cabal构建之间的选择。我选择使用堆栈构建并像这样配置它。

enter image description here

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

ng d route "your_route_name" 

但是,我无法弄清楚如何通过IDE重建项目。例如,如果我更改输出文本并重新运行程序,我仍然会看到原始的“Hello,Haskell”输出。构建 - >制作项目|制作模块|重建项目都无所事事。

Project Settings-> Artifacts选项卡没有列出任何内容,我也没有看到在这里添加Haskell可执行文件的方法。

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

(在一般的Haskell编译器设置中指定项目特定的/Users/williammcneill/Library/Haskell/bin/stack exec hellohaskell-exe -- Hello, Haskell. 文件的路径对我来说也很奇怪,但这是我能看到如何使用Stack构建的唯一方法。)< / p>

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

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

这是Haskforce issue 282

1 个答案:

答案 0 :(得分:4)

如果您想按下IntelliJ运行按钮来运行项目并使用Stack,我认为您应该使用@mrek所说的IntelliJ Haskell PluginHaskForce plugin现在说

  

注意:目前,堆栈不支持运行配置。这仅适用于集团项目。

readme中包含所有安装说明(从安装Stack到项目设置),但是我需要对其进行一些更改,因此将版本放在此处。

每个想要使用Haskell的人的安装说明

  1. 安装IntelliJ-Haskell插件,您可能想安装GitHub中的最新beta版本。
  2. 安装堆栈,their docs.中的说明
  3. 在终端/命令提示符下,运行stack install hindentstack install stylish-haskell(这可能需要一段时间)。
  4. 在IntelliJ中,打开了任何项目,在“文件” |“设置| Haskell提供了指向后代和时髦的路径,如install命令的输出所示。例如,在Windows上可能是C:\Users\username\AppData\Roaming\local\bin\hindent.exeC:\Users\username\AppData\Roaming\local\bin\stylish-haskell.exe,在Linux上可能是/usr/local/bin/hindent
  5. 重新启动计算机。
  6. 在Haskell模块类型的IntelliJ中创建一个新项目,选择Stack二进制文件(可能再次选择C:\Users\username\AppData\Roaming\local\bin\stack.exe)并设置为Default。
  7. 使用File |打开额外的日志。设置|外观|通知| Haskell日志。如果要花很长时间构建某些东西,您可以在此处看到进度(右下方,事件日志)。
  8. 您应该有一个文件app/Main.hs。您可以将其中的所有内容替换为main = putStrLn "Hello Haskell!"
  9. 现在按@mrek的说明执行操作:创建运行配置Haskell Stack | Haskell Stack Runner,然后运行它。您应该会看到问候消息。
  10. 更好的是,回答原始问题:更改消息并再次运行时,输出已更改!
  11. 以相同的方式,您可以进行运行测试的测试运行配置(Haskell Stack Tester)。

您可以通过单击IntelliJ底部的终端,然后运行stack ghci来启动交互式控制台。键入main时,您正在呼叫main,依此类推。 您也可以使用stack test代替测试运行配置。