文件夹中的相对引用文件而不是 Haskell 中的主要级别
Relative referencing files in folders instead of Main level in Haskell
我已经创建了一个库,但我还没有为它使用 cabal,所以它只是 main.hs 源和其他东西旁边的一个文件夹。当我放入其中一个文件夹以使用 "Shaders/lt.frag" 甚至 "Shaders" "lt.frag" 时,我收到 openBinaryFile 错误,因为顶层没有 "Shaders/lt.frag"。
所以它看的是“./Shaders/lt.frag”,而不是“./Graphics/Lib/Rendering/Shaders/lt.frag”。有什么办法解决吗?引用它的文件在“./Graphics/Lib/Rendering”中,所以它应该是相对于那个的。
如果您从 Haskell 程序中打开文件,那么 OS 查找文件的位置取决于程序的工作目录。通常,程序的工作目录是您调用可执行文件的目录,或者是您执行 GHCi 的目录。
工作目录与各个 Haskell 源文件所在的目录完全无关。
Cabal 确实为您提供了 a way 将程序数据文件放入特定位置并在 运行 程序时访问该数据目录(的路径)。
我已经创建了一个库,但我还没有为它使用 cabal,所以它只是 main.hs 源和其他东西旁边的一个文件夹。当我放入其中一个文件夹以使用 "Shaders/lt.frag" 甚至 "Shaders" "lt.frag" 时,我收到 openBinaryFile 错误,因为顶层没有 "Shaders/lt.frag"。
所以它看的是“./Shaders/lt.frag”,而不是“./Graphics/Lib/Rendering/Shaders/lt.frag”。有什么办法解决吗?引用它的文件在“./Graphics/Lib/Rendering”中,所以它应该是相对于那个的。
如果您从 Haskell 程序中打开文件,那么 OS 查找文件的位置取决于程序的工作目录。通常,程序的工作目录是您调用可执行文件的目录,或者是您执行 GHCi 的目录。
工作目录与各个 Haskell 源文件所在的目录完全无关。
Cabal 确实为您提供了 a way 将程序数据文件放入特定位置并在 运行 程序时访问该数据目录(的路径)。