基于Racket

时间:2015-12-23 18:03:17

标签: package racket raco

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

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

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

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

那么,我可以告诉cucumber v0.9.2只根据每个平台安装我需要的软件包吗?

1 个答案:

答案 0 :(得分:1)

是的。您可以使用#:platform文件的deps部分中的info.rkt符号来执行此操作。

您可以找到documentation on it hereexample of it in the racket-gui package

您可以使用'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")))