Configuration 如何管理单个Haskell程序的多个配置?
在Haskell world中,什么是自动工具的替代方案?我希望能够在相同源代码的不同配置之间进行选择 例如,Haskell中至少有两种MD5实现:Configuration 如何管理单个Haskell程序的多个配置?,configuration,haskell,build-automation,conditional-compilation,Configuration,Haskell,Build Automation,Conditional Compilation,在Haskell world中,什么是自动工具的替代方案?我希望能够在相同源代码的不同配置之间进行选择 例如,Haskell中至少有两种MD5实现:Data.Digest.OpenSSL.MD5和Data.Digest.Pure.MD5。我希望以这样一种方式编写代码,它可以找出已经安装了哪个库,而不需要安装另一个库 在C语言中,我可以使用Autotools/Scons/CMake+cpp。在Python中,我可以捕获ImportError。在Haskell中我应该使用哪些工具?在Haskell中
Data.Digest.OpenSSL.MD5
和Data.Digest.Pure.MD5
。我希望以这样一种方式编写代码,它可以找出已经安装了哪个库,而不需要安装另一个库
在C语言中,我可以使用Autotools/Scons/CMake+
cpp
。在Python中,我可以捕获ImportError
。在Haskell中我应该使用哪些工具?在Haskell中,您使用阴谋集团配置。在项目顶层目录中,您放置了一个扩展名为.cabal
的文件,例如.cabal
。内容大致如下:
Name: myfancypackage
Version: 0.0
Description: myfancypackage
License: BSD3
License-file: LICENSE
Author: John Doe
Maintainer: john@example.com
Build-Type: Simple
Cabal-Version: >=1.4
Flag pure-haskell-md5
Description: Choose the purely Haskell MD5 implementation
Default: False
Executable haq
Main-is: Haq.hs
Build-Depends: base-4.*
if flag(pure-haskell-md5)
Build-Depends: pureMD5-0.2.*
else
Build-Depends: hopenssl-1.1.*
《阴谋集团》有更多的细节,特别是关于的章节。正如诺米诺所说,阴谋集团是使用的工具。特别是"配置",“语法。谢谢!这正是我一直在寻找的答案。据我所知,我必须使用CC选项和cpp。对吗?对,它叫
CPP options
,CC
是C编译器。你还必须使用阴谋集团来构建你的项目。查看我的一个项目中的Makefile和.cabal文件:。另外,您需要将{-#语言CPP}添加到相关文件中。谢谢,诺曼,这是更好的标题。