我试图在我的程序中有条件地编译一个子模块,以在发布版本和开发版本之间切换代码的一小部分。
目前我正在尝试使用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 或其他预处理解决方案的经验?