Racket 中基于平台(或操作系统)的包依赖
Package dependencies based on platform (or operating system) in Racket
我有一个使用依赖于平台的系统库的包,每个系统库都被分离到它们自己的包中。有没有一种方法可以根据我安装的平台安装不同的依赖项?
最天真的解决方案是让包依赖于所有这些:
#lang info
...
(define deps '("mypackage-windows" "mypackage-osx"))
但是 mypackage-windows
和 mypackage-osx
即使不需要也会安装。更糟糕的是,我还需要确保 OS X 和 Windows 特定的软件包在错误的平台上安装时不会引起问题。
那么,有什么方法可以让 raco
仅根据每个平台安装我需要的软件包?
是的。您可以在 info.rkt
文件的 deps
部分使用 #:platform
符号来执行此操作。
您可以找到 documentation on it here, and an 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")))
我有一个使用依赖于平台的系统库的包,每个系统库都被分离到它们自己的包中。有没有一种方法可以根据我安装的平台安装不同的依赖项?
最天真的解决方案是让包依赖于所有这些:
#lang info
...
(define deps '("mypackage-windows" "mypackage-osx"))
但是 mypackage-windows
和 mypackage-osx
即使不需要也会安装。更糟糕的是,我还需要确保 OS X 和 Windows 特定的软件包在错误的平台上安装时不会引起问题。
那么,有什么方法可以让 raco
仅根据每个平台安装我需要的软件包?
是的。您可以在 info.rkt
文件的 deps
部分使用 #:platform
符号来执行此操作。
您可以找到 documentation on it here, and an 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")))