gpt4 book ai didi

haskell - Cabal:如何在同一个项目中配置可传递的构建依赖项

转载 作者:行者123 更新时间:2023-12-04 12:57:39 25 4
gpt4 key购买 nike

我有一个 cabal 的项目。它有库和测试目标。
测试目标取决于库,因为它测试库的功能。
问题是,每当我向库添加包依赖项时(例如,cryptohash-sha1)

library Lib
exposed-modules: Lib
other-extensions: DeriveGeneric
build-depends: base >=4.13 && <4.14,
cryptohash-sha1,
并运行测试,我收到错误

Could not load module ‘Crypto.Hash.SHA1’.
It is a member of the hidden package ‘cryptohash-sha1-0.11.100.1’.
Perhaps you need to add ‘cryptohash-sha1’ to the build-depends in your .cabal file


在这种情况下我所做的是将相同的包添加到测试目标
test-suite json-generator-test
hs-source-dirs: test, src
main-is: Test.hs
other-modules: Lib
build-depends: base >=4.13 && <4.14
cryptohash-sha1,
只有这样测试才会运行。
我希望测试目标自动依赖库目标中的所有包。我怎样才能做到这一点?

最佳答案

您可以使用称为普通节的 cabal 功能。您可以在以下博客文章中阅读更多相关信息:

  • https://vrom911.github.io/blog/common-stanzas

  • 使用这种方法,您可以将所有常见的依赖项放在一个单独的节中,然后将其导入到库和测试套件中:
    common common-dependencies
    build-depends: base >=4.13 && <4.14
    , cryptohash-sha1

    library Lib
    import: common-dependencies
    exposed-modules: Lib
    other-extensions: DeriveGeneric

    test-suite json-generator-test
    import: common-dependencies
    hs-source-dirs: test, src
    main-is: Test.hs
    other-modules: Lib

    关于haskell - Cabal:如何在同一个项目中配置可传递的构建依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64403376/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com