Когда я использую различные макросы MIN_VERSION_
Cabal в проекте Haskell, как я могу убедиться, что все они правильно определены, когда я не использую cabal, например. при тестировании в GHCi?Как использовать MINIL_VERSION_ и другие макросы с ghci?
ответ
В настоящее время cabal
поддерживает подкоманду cabal repl
, которая выполняет всю настройку для вас, поэтому по крайней мере для ghci
не требуется следующее. Тем не менее:
Команда cabal build
создает файл dist/build/autogen/cabal_macros.h
, в котором содержатся все необходимые определения. Чтобы включить этот файл в вызов ghc, вам понадобятся флаги -optP-include -optPdist/build/autogen/cabal_macros.h
.
Для удобства, вы можете поместить следующее в .ghci
файл в директории проекта:
:set -optP-include -optPdist/build/autogen/cabal_macros.h
, так что вы не должны впечатать параметры каждый раз, когда вы хотите использовать GHCI.
Остерегайтесь, однако: макросы будут определены в соответствии с конфигурацией при последнем запуске cabal build
и не будут обновляться при установке новых пакетов или использовании другой версии GHC: для этого вам нужно будет повторно настроить и перестроить пакет.
(Благодаря Саймону Хенгелю в списке библиотек для этой мудрости: http://www.haskell.org/pipermail/libraries/2012-September/018491.html).