#haskell #ghc
#haskell #ghc
Вопрос:
Это смущающе простая проблема, но ее решение пока ускользает от меня. Как следует из названия, я просто хочу указать в GHC расположение всех моих исходных файлов. Это должно быть просто; руководство пользователя GHC:
-у менякаталоги
Этот флаг добавляет список каталогов, разделенных двоеточием, к пути поиска.
Итак, я попробовал следующие вызовы:
ghc -isrc/ -v -outputdir build/ --make -Wall Main.hs
ghc -isrc/: -v -outputdir build/ --make -Wall Main.hs
ghc -i:src/: -v -outputdir build/ --make -Wall Main.hs
ghc -i"src/" -v -outputdir build/ --make -Wall Main.hs
ghc -i"src/": -v -outputdir build/ --make -Wall Main.hs
ghc -i:"src/": -v -outputdir build/ --make -Wall Main.hs
При каждом вызове GHC выдавал ошибку: «<нет информации о местоположении>: не удается найти файл: Main.hs»
Как вы, вероятно, могли догадаться, Main.hs расположен в подкаталоге рабочего каталога под названием «src». На всякий случай, если это имеет значение, я на Windows XP, и я использую GHC 6.12.2. Я предполагаю, что есть какая-то небольшая проблема, которую я просто упускаю.
Комментарии:
1. Вы пробовали использовать пробел между -i и путем? «ghc -i src/ -v -outputdir build/ —make -Wall Main.hs»
2. У меня есть; это приводит к тому, что GHC полностью неверно истолковывает то, что вы имеете в виду.
3. Хорошо, это полезно знать. Не был уверен, поэтому решил спросить.
Ответ №1:
-i
указывает, где GHC будет искать другие исходные файлы, отличные от тех, которые вы указываете в командной строке. Поэтому вашему Main.hs
там также понадобится префикс src / . Например.
$ ghc -isrc src/Main.hs --make
[1 of 1] Compiling Main ( src/Main.hs, src/Main.o )
Linking src/Main ...
В качестве альтернативы, вы могли бы использовать cabal и cabal init
сгенерировать все метаданные сборки для вас.
Комментарии:
1. Ах! Это действительно сработало. Спасибо, что исправили мое недоразумение!