我正在尝试使2个可执行文件成为“项目”。此问题的所有重复项均无济于事-他们的答案不能解决我的问题。我有这样的.cabal文件:
name: int-tests
version: 0.1.0.0
synopsis: Integration Tests Suite
description: Integration Tests Suite
license: AllRightsReserved
author: Author name here
maintainer: example@example.com
copyright: 2018 Author name here
build-type: Custom
extra-source-files: README.md
cabal-version: >=1.10
library
hs-source-dirs: common
exposed-modules: Common
build-depends: base
, text
, aeson
, network-uri
default-language: Haskell2010
ghc-options: -Wall -Werror
executable api-tests-exe
hs-source-dirs: api
main-is: Main.hs
ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall -Werror
build-depends: base
, hspec
, QuickCheck
default-language: Haskell2010
executable e2e-tests-exe
hs-source-dirs: e2e
main-is: Main.hs
ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall -Werror
build-depends: base
, hspec
, QuickCheck
default-language: Haskell2010
,当我致电stack ide targets
时,我没有看到这两个目标。因此,stack build api-tests
和stack build e2e-tests
也不起作用。
如何为堆栈创建2个目标的项目?我也尝试了package.yaml,但结果是一样的。堆栈版本为1.9.1。我有像这样的文件夹树:
api/
...
e2e/
...
Main.hs文件的内容如下:
module Main (main) where
main :: IO ()
main = print "Hello"
我也尝试了选项-main-is Main
,但没有成功。
错误如下:
Error: While constructing the build plan, the following exceptions were encountered:
Unknown package: api-tests
答案 0 :(得分:1)
AFAIK,stack build
始终建立您的所有目标。但是,如果只想运行一个可执行文件,则需要全名,包括-exe
。因此,stack exec api-tests-exe
和stack exec e2e-tests-exe
。
但是您真正想要做的是使这些测试目标:https://www.haskell.org/cabal/users-guide/developing-packages.html#test-suites
答案 1 :(得分:0)
问题在stack.yaml文件中,我必须添加“。”文件夹中的“包装:”部分。