1

我有一个使用平台相关系统库的包,每个库都分离到自己的包中。有没有办法可以根据我安装的平台安装不同的依赖项?

最天真的解决方案是让包依赖于所有这些:

#lang info
...
(define deps '("mypackage-windows" "mypackage-osx"))

但是mypackage-windowsmypackage-osx即使不需要它们,也要安装。更糟糕的是,我需要确保 OS X 和 Windows 特定的软件包在安装在错误的平台上时不会引起问题。

那么,有什么方法可以告诉我raco只根据每个平台安装我需要的软件包吗?

4

1 回答 1

1

就在这里。您可以使用文件部分中的#:platform符号来执行此操作。depsinfo.rkt

您可以在此处找到有关它的文档,并在 racket-gui 包中找到它的示例

您可以使用'osx 'unix'windows来确定您所在的平台。

所以你的例子看起来像:

#lang info
...
(define deps '((mypackage-windows #:platform windows)
               (mypackage-osx     #:platform osx))

事实上,如果你想拥有一个不同版本的包,它们在 36 和 64(甚至 ppc)变体上的工作方式不同,你也可以这样做:

#lang info
...
(define deps '((mypackage-windows-64 #:platform "win32\\x86_64")
               (mypackage-windows-32 #:platform "wind32\\i386")
               (mypackage-osx-64     #:platform "x86_64-macosx")
               (mypackage-osx-32     #:platform "i386-macosx")
               (mypackage-osx-ppc    #:platform "ppc-macosx")))
于 2015-12-23T18:09:59.373 回答