gpt4 book ai didi

windows - 在 Windows 上部署应用程序的 GHC API 的简单方法

转载 作者:可可西里 更新时间:2023-11-01 12:40:26 27 4
gpt4 key购买 nike

我想在需要访问 GHC API 的 Windows 上部署一个应用程序。使用 Wiki 中的第一个简单示例:

http://www.haskell.org/haskellwiki/GHC/As_a_library

导致以下错误(在一台带有 haskell 平台的机器上编译并在另一台干净的 Windows 安装上执行):test.exe: 在 C:\haskell\lib\package.conf.d 找不到包数据库

我想将我的应用程序部署为一个简单的 zip 文件,并且不需要用户安装任何东西。有没有一种直接的方法可以将所需的 GHC 内容包含在该 zip 文件中以使其正常工作?

最佳答案

此程序会将必要的文件复制到指定目录(仅适用于 Windows):

import Data.List (isSuffixOf)
import System.Environment (getArgs)
import GHC.Paths (libdir)
import System.Directory
import System.FilePath
import System.Cmd

main = do
[to] <- getArgs
let libdir' = to </> "lib"
createDirectoryIfMissing True libdir'
copy libdir libdir'
rawSystem "xcopy"
[ "/e", "/q"
, dropFileName libdir </> "mingw"
, to </> "mingw\\"]


-- | skip some files while copying
uselessFile f
= or $ map (`isSuffixOf` f)
[ "."
, "_debug.a"
, "_p.a", ".p_hi" -- libraries built with profiling
, ".dyn_hi", ".dll"] -- dynamic libraries


copy from to
= getDirectoryContents from
>>= mapM_ copy' . filter (not . uselessFile)
where
copy' f = do
let (from', to') = (from </> f, to </> f)
isDir <- doesDirectoryExist from'
if isDir
then createDirectory to' >> copy from' to'
else copyFile from' to'

以目标目录作为参数运行它后,您将拥有 libmingw 的本地副本(总共约 300 Mb)。

您可以从 lib 中删除未使用的库以节省更多空间。

关于windows - 在 Windows 上部署应用程序的 GHC API 的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5355878/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com