fuz*_*fuz 13 build-process haskell cmake cabal
我正在计划一个用Haskell编写的项目,也许C中也有一些部分.对于构建系统,我决定反对Haskell程序cabal的常见选择,主要是因为我想学习如何在其他语言中构建程序.
我听说过CMake,我认为这是一款很酷的产品.虽然我不知道如何使用它,但我想将CMake用于该项目,只是为了了解它是如何工作的.谷歌没有透露任何关于如何将cmake与haskell一起使用的事实,我读过的所有教程都相当混乱.有可能,如果是的话,怎么可能用Cake编译用Haskell编写的项目?
Don*_*art 17
您当然可以使用CMake构建Haskell应用程序和库.要做到这一点,你需要复制Cabal所做的大部分工作,这将是有益的,但也很耗时.
我建议使用cabal build -v看看Cabal发出的命令,然后将它们转录成CMake形式.
或者,使用CMake在Haskell代码上调用cabal - 这可能不那么烦人了.
我为cabal包编写了简单的cmake包装器并将其放在这里:
http://bitbucket.org/arrowd/cmake-findcabal(使用"获取源"按钮下载).
目前它在Windows和FreeBSD上为我工作,但我仍然打算稍后改进它.我已经在这里回答这个问题,所以人们可以在谷歌找到它,就像我一样.
虽然您当然可以通过使用通用构建工具直接构建Haskell代码,但结果更难以维护,与社区共享更加困难,并且比在Cabal之上构建时更难构建.
对于构建系统,我决定反对Haskell程序cabal的常见选择,主要是因为我想学习如何在其他语言中构建程序.
我理解这句话背后的意图是你想要看到构建过程的所有单独步骤,但是通过另一种方式,通过避免cabal,你没有看到Haskell中的程序是如何构建的,你看到它是多么痛苦是重建社区提供的工具.
我建议做唐提出的建议.查看在cabal -v特定编译器(可能是ghc)下构建的输出,并在CMake中复制这些步骤.
但是,一旦你理解了这些步骤,我就会认真考虑把这些知识带回到Cabal.如果只是为了让它处理支持多个编译器,平台,包管理等问题.从而减少构建系统的脆弱性,并使包装和共享工作更容易.
也就是说,除了ghc本身之外,我无法想到社区主动使用的单个非Cabal构建的包或二进制文件.
但是,我希望您在构建过程中的运气之旅中获得好运!