小编Eri*_*ler的帖子

Haskell 子模块中的条件编译

我试图在我的程序中有条件地编译一个子模块,以在发布版本和开发版本之间切换代码的​​一小部分。

目前我正在尝试使用cpphs但是当我更改传递给 GHC 的标志以定义变量并更改 ifdef 语句堆栈时,不会重新编译这些文件。

例如,我有一个端口号,我想根据我构建的目标进行切换。我定义这个数字的代码看起来像这样。

#ifdef StableRelease 
  port = 12345
#else 
  port = 54321 
#endif
Run Code Online (Sandbox Code Playgroud)

稳定版本的 cabal 文件中有以下选项

ghc-options: -threaded -rtsopts -with-rtsopts=-N -pgmP cpphs -optP "-DStableRelease"
Run Code Online (Sandbox Code Playgroud)

当我运行时,stack build它似乎并没有真正预处理上面的代码。有没有人有使用 cpphs 或其他预处理解决方案的经验?

haskell haskell-stack

4
推荐指数
1
解决办法
499
查看次数

标签 统计

haskell ×1

haskell-stack ×1