Я не смог найти способ сделать это, поэтому вот мой предложенный обходной путь:
Вместо использования stack run ...
создайте приложение с помощью stack build
и запустите программу напрямую.
Итак, вместо использования
# The Problem: This doesn't work because run doesn't recognize --flag
> stack run --flag asd:qwe
используйте следующий двухэтапный подход:
stack build --flag asd:qwe
./path/to/your/executable/<your executable>
Если вы используете stack install
вместо stack build
, стек помещает скомпилированный двоичный файл в каталог local-bin
. ¹ В документации предлагается добавить этот каталог в переменную $ PATH , это означает, что вы можете просто позвонить <your-executable>
.
В остальной части этого ответа предполагается, что вы используете stack build
.
В моей системе (Arch linux, май '19, стек 1.9.3.1), стек помещает скомпилированный двоичный файл в папку bin
внутри local-install-root
. (Покажите, используя stack path --local-install-root
.)
Полный путь к исполняемому файлу должен быть <local-install-root>/bin/<executable-name>
¹ Согласно В руководстве пользователя регулярно возникает путаница относительно значения stack install
. Это псевдоним stack build --copy-bins
, который просто копирует двоичный файл в local-bin-path
после сборки, что делает его общедоступным, если ваш $ PATH включает local-bin-path