从构建不依赖exe的内部库中停止“堆栈安装”吗?

问题描述 投票:0回答:1

我正在尝试使用stack install来构建和安装一些可执行文件。我的软件包还具有测试套件和基准测试所依赖的内部库,但是所有可执行文件都没有。但是当我执行stack install时,它会尝试构建内部库。我一直无法找到一种方法来阻止这种情况,尝试使用目标和--skip的各种组合。有可能吗?

我的根package.yaml的布局类似

name: my-lib

library:
  ...

internal-libraries:
  test-lib:
    ...
    dependencies:
      - my-lib

tests:
  test:
    ...
    dependencies:
      - test-lib
      ...

benchmarks:
  bench:
    ...
    dependencies:
      - test-lib
      ...

并且可执行文件的package.yamls只是

name: some-exe

executables:
  some-exe:
    ...
    dependencies:
      - my-lib
      ...

没有任何内容在其依赖项中列出test-libtest-lib仅存在,以便基准测试可以使用测试套件中定义的某些实用程序;直到最近,它只是测试套件的一部分,而不是单独的库,stack install并未尝试构建它。

haskell-stack
1个回答
0
投票

我发现的一个选择是仅为内部库创建一个单独的包。我创建了一个目录test-pkg,并将所有内容从internal-libraries行下移到其中的package.yaml中。我还为我的测试套件和基准测试创建了指向源目录的符号链接,并在原始包的根目录中找到了其他相关内容。

然后我可以做

stack install `stack ide targets 2>&1 | grep :exe:`

要安装所有二进制文件。

我不太喜欢这个,但它似乎有效。

© www.soinside.com 2019 - 2024. All rights reserved.