首页 文章

使用haskell堆栈在 生产环境 和沙箱环境之间切换

提问于
浏览
4

我喜欢用 stack build 进行构建时,应用程序的目标是真实 生产环境 服务器的URL,但是在使用 stack repl 进行调试时,应用程序会以测试服务器的URL为目标 .

我想这可以通过条件编译来实现,但是如何配置堆栈以将选项如 -DDEBUG=1 传递给GHCi而不是GHC?

更一般地说,许多工具(Visual Studio,Xcode ...)支持项目的多个构建配置 . 是否有堆栈或cabal等价物?

1 回答

  • 3

    一种方法是在运行时检查System.Environment.getProgNameghc . 这不一定是可靠的检查,因为在某些情况下可执行文件可以被称为其他内容 . 堆栈安装的可执行文件将是 ghc ,但对于系统安装的ghcs,它可能是 ghc-8.0.1 或其他东西 . 所以,这种方法并非完全可靠 .

    我发现了一种更好的方法,即添加一个 .ghci 文件,其中包含ghci在启动时运行的命令 . 我没有对此进行测试,但我认为将 :set -DDEBUG=1 放在项目根目录中的 :set -DDEBUG=1 中会起作用 . 还需要使用 chmod go-w .ghci 调整其权限 .

相关问题