Я понимаю, что ваш вопрос касается поиска файлов во время выполнения, которые вы хотите обработать и которые не упакованы вместе с вашим пакетом.
Где несколько способов, как вы можете найти файлы во время выполнения, которые не't packaged.
Либо добавьте флаг командной строки и вызовите свой исполняемый файл с абсолютным путем к файлу, который вы хотите обработать.
Или внедрите диалоговое окно выбора файла, например, gi-gtk
.
Или жесткое кодирование относительных путей, что нежелательно, так как они интерпретируются относительно текущего рабочего каталога вашего процесса, которые могут различаться в зависимости от того, как программа начала работу.
Если вы хотите определить, в каком текущем рабочем каталоге работает ваша программа, если она запущена с cabal run
, просто выполните небольшой тестовый проект со следующим кабальным файлом:
name: test2
build-type: Simple
cabal-version: >= 1.10
version: 0.0.0.1
executable test2
hs-source-dirs: .
main-is: test2.hs
build-depends:
base
, directory
и следующим test2.hs
:
module Main where
import System.Directory
main :: IO ()
main = do
cwd <- getCurrentDirectory
putStrLn cwd