Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为使用C和Haskell的项目构建系统_C_Haskell_Cmake_Cabal - Fatal编程技术网

为使用C和Haskell的项目构建系统

为使用C和Haskell的项目构建系统,c,haskell,cmake,cabal,C,Haskell,Cmake,Cabal,我正在从事一个使用C和Haskell的项目。目前,我正在使用CMake构建一个C共享库,使用cabal构建一个Haskell可执行文件。有没有更统一的方法来实现这一点?我可以从CMake生成的Makefile调用cabal吗?或者有没有一种方法可以直接从cabal构建C库?谢谢。CMake也可以做你想做的事。然而,它确实复制了阴谋集团的许多功能。因此,您可以从您选择使用的任何构建工具调用cabal(对于cmake,使用自定义命令,对于makefiles,这是非常不言自明的),直接构建二进制文件(

我正在从事一个使用C和Haskell的项目。目前,我正在使用CMake构建一个C共享库,使用cabal构建一个Haskell可执行文件。有没有更统一的方法来实现这一点?我可以从CMake生成的Makefile调用cabal吗?或者有没有一种方法可以直接从cabal构建C库?谢谢。

CMake也可以做你想做的事。然而,它确实复制了阴谋集团的许多功能。因此,您可以从您选择使用的任何构建工具调用cabal(对于cmake,使用自定义命令,对于makefiles,这是非常不言自明的),直接构建二进制文件(请参阅cabal build-v)


请参阅。

您真的需要C库吗?您可以通过Cabal直接指定C源文件,它们将被编译并链接到您的项目中。我正在开发一种编程语言,将源代码编译为C作为中间语言。解析器和C代码生成器是用Haskell编写的。C中间代码通过管道传输到systems C编译器,该编译器链接到共享库。因此,库和可执行文件是分离的实体;我不需要将haskell的东西与库链接。您可以在cabal文件中指定自定义构建模式,只需在cabal构建期间的适当时间运行cmake(可能是在haskell包构建之前或之后)。请参阅的文档。您只需要在CMake中创建自定义命令来调用Cabal。见: