2013-02-28 2 views
3

У меня довольно большой проект haskell, а запуск ghci на некоторых файлах может потребовать компиляции десятков или сотен модулей, прежде чем он получит приглашение, которое может занять несколько минут. Я использую cabal, и поэтому я обычно скомпилировал объектные файлы в dist /. Но ghci ищет файлы .o рядом с исходными файлами .hs; он не знает о том, что произошло в каббале. Есть ли простой и хороший способ заставить ghci загружать эти объектные файлы, а не перекомпилировать все самостоятельно?как повторно использовать скомпилированные модули cabal при использовании ghci

Я прошу простого и хорошего способа, потому что у меня есть сложные и уродливые способы сделать это. :) Например, это заставит ghci повторно использовать скомпилированные модули cabal. Я придумал эту команду , выполнив копирование и изменив способ выполнения gbc cabal, гарантируя, что он устанавливает все так же, как и последнюю сборку cabal, что необходимо для обеспечения того, чтобы ghci загружал модули.

ghci -package-conf dist/package.conf.inplace -i -idist/build/git-application/git-application-tmp -i. -idist/build/autogen -Idist/build/autogen -Idist/build/git-application/git-application-tmp -optP-include -optPdist/build/autogen/cabal_macros.h -odir dist/build/git-application/git-app-tmp -hidir dist/build/git-application/git-application-tmp -stubdir dist/build/git-application/git-application-tmp -XHaskell98 dist/build/git-application/git-application-tmp /Utility/libdiskfree.o dist/build/git-application/git-application-tmp/Utility/libmounts.o

Похоже на то, что «cabal ghci» может вычислить эту командную строку и запустить ее , или, возможно, есть инструмент, о котором я не знаю, который уже делает это.

+0

ли вы на самом деле сделали междусобойчик _register_ скомпилированных модулей ('междусобойчик install')? – leftaroundabout

+0

Нет, потому что они являются частью приложения и меняются по мере его разработки. –

ответ

0

Вы можете установить odir и НДИ параметры, чтобы указать на междусобойчик каталог сборки, как так: http://www.haskell.org/ghc/docs/7.6.1/html/users_guide/separate-compilation.html#output-files

+0

Просто -одир сам по себе, похоже, не достаточен для того, чтобы ghci был доволен объектами cabal. -ohi кажется для одного файла интерфейса и ненужным. Моя командная строка выше содержит -odir, и большинство других вещей в ней также кажется необходимым сделать ghci счастливым. –

Смежные вопросы