Компилировать более одного сценария черепахи в одном каталоге

Хотя я могу использовать несколько сценариев черепахи в одном каталоге (например, интерпретированы pretty.hs и srv.hs), я узнал, что могу скомпилировать только один из них, например. с

ghc -no-user-package-db -package-db .cabal-sandbox/*-packages.conf.d -O2 -threaded -outputdir=. -o srv srv.hs

поскольку это неявно создает также Main.o и Main.hi, а для srv и pretty, очевидно, потребуются два разных объектных файла.

В любом случае, какова история с Turtle и модулем Main: было бы лучше, если бы можно было использовать (и таким образом выбрать) имя модуля, например

Module Whatever
import Turtle

Я попытался скомпилировать файлы.o отдельно, но безуспешно:

$ ghc -no-user-package-db -package-db .cabal-sandbox/*-packages.conf.d -O2 -threaded -outputdir=. -c -o MainPretty.o pretty.hs

жалоб пока нет, но потом:

$ ghc -no-user-package-db -package-db .cabal-sandbox/*-packages.conf.d -O2 -threaded -outputdir=. -o pretty MainPretty.o

MainPretty.o: In function `rdyO_info':
(.text+0x40e): undefined reference to `transzuGZZTjP9K5WFq01xC9BAGQpF_ControlziMonadziIOziClass_zdfMonadIOIO_closure'
MainPretty.o: In function `rdyQ_info':
(.text+0x4d6): undefined reference to `transzuGZZTjP9K5WFq01xC9BAGQpF_ControlziMonadziIOziClass_zdfMonadIOIO_closure'
MainPretty.o: In function `cfxy_info':
(.text+0x712): undefined reference to `optpazuFpNJ7fLofFNEy3rK4ZZnBoD_OptionsziApplicativeziTypes_AltP_con_info'
MainPretty.o: In function `cfxy_info':
(.text+0x72e): undefined reference to `systezu0e3pMPmZZzzix21iFp2U03Lc_FilesystemziPathziRules_posixFromText_closure'
MainPretty.o: In function `cfyR_info':
(.text+0x92a): undefined reference to `optpazuFpNJ7fLofFNEy3rK4ZZnBoD_OptionsziApplicativeziTypes_AltP_con_info'

и так далее...

Возможно ли, тем не менее, скомпилировать два разных сценария черепахи в одном и том же каталоге? как?

Благодарю.

1 ответ

Ах, чтобы ответить на мой собственный вопрос: я увидел, что мне просто нужно удалить эти файлы Main.o/Main.hi после компиляции (чтобы потом создать другой файл заново), вот так:

ghc -no-user-package-db -package-db .cabal-sandbox/*-packages.conf.d -O2 -threaded -outputdir=. -o pretty pretty.hs
rm -f Main.o Main.hi

Извините за шум

Другие вопросы по тегам