Мне нужно создать *.hie
файлы для всех моих файловых модулей Haskell в проекте, управляемом Haskell Stack. Я делаю это, добавляя флаг компиляции -fwrite-ide-info
к stack.yaml
в следующей форме:
ghc-options:
"$locals": -fwrite-ide-info
Допустим, проект состоит из одного пакета с библиотекой и исполняемым файлом. Урезанный package.cabal
будет
name: package
library
exposed-modules:
Package.Exposed.Module
ghc-options: -fwrite-ide-info
executable binary
main-is: Main.hs
ghc-options: -fwrite-ide-info
build-depends:
package
Затем я запускаю stack build
.
Во время компиляции файлы *.hie
создаются в каталоге .stack-work
.
Если быть точным, соответственно, библиотека и исполняемые файлы находятся в
path/to/project/package/.stack-work/dist/x86_64-linux-tinfo6/Cabal-3.0.1.0/build/Package/...
path/to/project/package/.stack-work/dist/x86_64-linux-tinfo6/Cabal-3.0.1.0/build/binary/binary-tmp/...
Мне нужны файлы *.hie
в реальных исходных каталогах, и, как видно, эти *.hie
файлы отображаются для библиотеки, но не для исполняемого файла.
Теперь мой вопрос: как Haskell Stack обрабатывает *.hie
файлы. Обрабатываются ли они особым образом, например, копируются ли они в исходные файлы, где их могут найти программы, использующие их (одна из таких программ, которую я хочу использовать, - weeder
)? Если нет, я понятия не имею, как появились эти *.hie
файлы. У вас есть предложения?
Спасибо!