Проблема с указанием исходного каталога в GHC

#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. Ах! Это действительно сработало. Спасибо, что исправили мое недоразумение!