Два исполняемых файла в одном файле Cabal;сборка стека не распознает их - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь сделать 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, я не вижу этих 2 целей.Итак, 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

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Проблема была в файле stack.yaml, мне пришлось добавить '.'папка в раздел «пакеты:».

0 голосов
/ 13 декабря 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...