如何在单独的目录中使用 Chicken Scheme 模块?
How to use a Chicken Scheme module in a separate directory?
我有以下项目结构:
.
├── main.scm
└── stream
├── stream.import.scm
├── stream.scm
└── stream.so
stream.scm
定义了一个模块:
; stream.scm
(module stream
(...)
(import scheme (chicken base))
...)
和 main.scm
使用 stream
模块:
; main.scm
(import stream)
...
我通过 csc -s stream.scm -j stream
编译了 stream
。
我想使用嵌套在 stream
目录中的 stream
模块来编译 main.scm
,但我找不到这样做的方法。
我阅读了手册页并尝试了
csc main.scm -I ./stream
但是提示警告
Warning: the following extensions are not currently installed: stream
并且可执行文件不工作:
Error: (require) cannot load extension: stream
...
当我将 main.scm
放入 stream
目录时它确实有效。
我应该怎么做才能让 main.scm
知道 stream
模块?
我想你可能想为这个项目设置 CHICKEN_REPOSITORY_PATH
。
示例:
~/dev/scheme/subdir_test$ chicken-install -repository
/home/richardh/dev/chicken/lib/chicken/11
~/dev/scheme/subdir_test$ export CHICKEN_REPOSITORY_PATH="/home/richardh/dev/chicken/lib/chicken/11:/home/richardh/dev/scheme/subdir_test/sub/"
~/dev/scheme/subdir_test$ cat alpha.scm
(import beta)
(print "Hello " (hello_name))
~/dev/scheme/subdir_test$ cat sub/beta.scm
(module beta (hello_name)
(import scheme)
(define (hello_name)
"World")
)
~/dev/scheme/subdir_test$ cd sub/
~/dev/scheme/subdir_test/sub$ csc -s beta.scm -j beta
~/dev/scheme/subdir_test/sub$ cd ..
~/dev/scheme/subdir_test$ csc alpha.scm
~/dev/scheme/subdir_test$ ./alpha
Hello World
如果你google“chicken scheme virtualenv”你会发现几个更复杂版本的例子。
如果您想安装多个版本的 chicken 本身,您可能还对“chicken-belt”和“dust”鸡蛋感兴趣http://wiki.call-cc.org/chicken-projects/egg-index-5.html#tools。
我有以下项目结构:
.
├── main.scm
└── stream
├── stream.import.scm
├── stream.scm
└── stream.so
stream.scm
定义了一个模块:
; stream.scm
(module stream
(...)
(import scheme (chicken base))
...)
和 main.scm
使用 stream
模块:
; main.scm
(import stream)
...
我通过 csc -s stream.scm -j stream
编译了 stream
。
我想使用嵌套在 stream
目录中的 stream
模块来编译 main.scm
,但我找不到这样做的方法。
我阅读了手册页并尝试了
csc main.scm -I ./stream
但是提示警告
Warning: the following extensions are not currently installed: stream
并且可执行文件不工作:
Error: (require) cannot load extension: stream
...
当我将 main.scm
放入 stream
目录时它确实有效。
我应该怎么做才能让 main.scm
知道 stream
模块?
我想你可能想为这个项目设置 CHICKEN_REPOSITORY_PATH
。
示例:
~/dev/scheme/subdir_test$ chicken-install -repository
/home/richardh/dev/chicken/lib/chicken/11
~/dev/scheme/subdir_test$ export CHICKEN_REPOSITORY_PATH="/home/richardh/dev/chicken/lib/chicken/11:/home/richardh/dev/scheme/subdir_test/sub/"
~/dev/scheme/subdir_test$ cat alpha.scm
(import beta)
(print "Hello " (hello_name))
~/dev/scheme/subdir_test$ cat sub/beta.scm
(module beta (hello_name)
(import scheme)
(define (hello_name)
"World")
)
~/dev/scheme/subdir_test$ cd sub/
~/dev/scheme/subdir_test/sub$ csc -s beta.scm -j beta
~/dev/scheme/subdir_test/sub$ cd ..
~/dev/scheme/subdir_test$ csc alpha.scm
~/dev/scheme/subdir_test$ ./alpha
Hello World
如果你google“chicken scheme virtualenv”你会发现几个更复杂版本的例子。
如果您想安装多个版本的 chicken 本身,您可能还对“chicken-belt”和“dust”鸡蛋感兴趣http://wiki.call-cc.org/chicken-projects/egg-index-5.html#tools。