我正在尝试使用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-lib
。 test-lib
仅存在,以便基准测试可以使用测试套件中定义的某些实用程序;直到最近,它只是测试套件的一部分,而不是单独的库,stack install
并未尝试构建它。
我发现的一个选择是仅为内部库创建一个单独的包。我创建了一个目录test-pkg
,并将所有内容从internal-libraries
行下移到其中的package.yaml中。我还为我的测试套件和基准测试创建了指向源目录的符号链接,并在原始包的根目录中找到了其他相关内容。
然后我可以做
stack install `stack ide targets 2>&1 | grep :exe:`
要安装所有二进制文件。
我不太喜欢这个,但它似乎有效。