我正在尝试在 Haskell 中编写一个包。这个包包含一个库和一个可执行文件。我在 Cabal 文件中指定了这一点。该库包含三个基本组件:
1)有库的暴露模块
2) 存在不应作为库的一部分导出的内部构建依赖项
3)存在外部构建依赖项。
Cabal 文件中有一些重叠。对于我写的图书馆:
暴露模块:暴露模块列表
other-modules:其他模块列表
build-depends:构建依赖项列表
然后对于可执行文件
other-modules:可执行文件中需要暴露的模块和其他模块的列表
build-depends:构建依赖项列表
如果 Cabal 让我有一个变量,那就太好了。
V1 = 列出暴露的模块
V2 = 列出其他模块
V3 = 列出构建依赖项
然后在可执行文件中,例如,我可以做
其他模块:V1,V2
构建依赖:V3
或者,我会推荐使用 Cabal 系统的更好方法!
最佳答案
不,这还不可能。我认为我们在某个地方的问题跟踪器上有类似这样的功能请求。但是请注意,您的可执行文件可能依赖于同一 .cabal
中定义的库。文件,因此您不必共享 exposed-modules
和 other-modules
:
Name: some-package
Version: 0.1
[...]
Library
build-depends: some-dependency >= 1.0, ...
exposed-modules: A, B, C
other-modules: C, D, E
[...]
Executable some-exe
main-is: SomeExe.hs
build-depends: some-package == 0.1
有关真实示例,请参阅 here .
关于haskell - Cabal中的变量(Haskell),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18707546/