我必須建立一些取決於操作系統的應用程序。例如,我正在搜索目錄,如果我看到一些項目是符號鏈接(在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」包提供的模塊?或者也許有另一種方法來解決這些問題?
這兩種方式都適合我。謝謝! –