我必须建立一些取决于操作系统的应用程序。例如,我正在搜索目录,如果我看到一些项目是符号链接(在Linux中),我只是跳过它们并继续。为了检查这一点,我使用了“unix”包装下的函数System.Posix.Files.isSymbolicLink。问题是这个软件包不能在Windows上构建,当应用程序在Windows上构建时,我不得不绕过这个限制。我试过这个技巧:
1)创建附加文件:./System/Posix/Files.hs,其中暴露功能isSymbolicLink总是返回假。
2)更新.cabal文件有以下几点:如何在haskell + cabal中配置构建依赖关系?
if os(windows)
other-modules: System.Posix.Files
else
build-depends: unix
但是,尽管我的配置,阴谋建立总是建立我/System/Posix/Files.hs因为我有进口System.Posix.Files在我main.hs:
预处理可执行文件进行测试1.1.1 ...
大厦测试1.1.1 ...
[2 1]编译System.Posix.Files(系统/ Posix/Files.hs,dist/build/te编译主(main.hs,dist/build/test/test-tmp/Main.o)
链接dist/build/test /测试...
所以,即使我在Linux上构建,应用程序获取我的空白isSymbolicLink函数,而不是那些“UNIX”封装。我怎样才能告诉cabal不包含这个文件,并且在linux上构建时使用“unix”包提供的模块?或者也许有另一种方法来解决这些问题?
这两种方式都适合我。谢谢! –