我有一个使用平台相关系统库的软件包,每个软件包都分离到自己的软件包中。有没有办法根据我正在安装的平台安装不同的依赖项?
最天真的解决方案是让包依赖于所有这些:
#lang info
...
(define deps '("mypackage-windows" "mypackage-osx"))
但即使不需要mypackage-windows
和mypackage-osx
,也会安装raco
和protractor v2.5.1
。更糟糕的是,我需要确保OS X和Windows特定的软件包在安装在错误的平台上时不会引起问题。
那么,我可以告诉cucumber v0.9.2
只根据每个平台安装我需要的软件包吗?
答案 0 :(得分:1)
是的。您可以使用#:platform
文件的deps
部分中的info.rkt
符号来执行此操作。
您可以找到documentation on it here和example 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")))