我使用asdf定义了一个常见的lisp包,它使用了parenscript和clsql.
但是这些软件包在函数GET-TIME周围存在命名冲突.加载模块后,我可以在提示符下手动解决冲突(代码可能不准确):
Select a symbol to be made accessible in package MY_PACKAGE:
1. PS-JS-SYMBOLS:GET-TIME
2. CLSQL-SYS:GET-TIME
Run Code Online (Sandbox Code Playgroud)
我选择选项1.
修改项目的最佳方法是什么,以便自动解决此冲突?
我是否修改.asd文件或project.lisp文件?
我认为答案可能与:shadowing-import-from有关,但我并不真正理解该文档页面上给出的示例.
我是CL的新手,我无法弄清楚如何从我的简单项目中构建二进制文件.
我创建了app.asd包含以下内容的文件:
(asdf:defsystem game
:version "0.0.1"
:components ((:file "package")
(:file "main")))
Run Code Online (Sandbox Code Playgroud)
package.lisp 内容
(defpackage :app
(:use :common-lisp :asdf)
(:export :start))
Run Code Online (Sandbox Code Playgroud)
和 main.lisp
(in-package :app)
(defun start (args)
(format t "Hello"))
Run Code Online (Sandbox Code Playgroud)
我也符号链接app.asd到~/quicklisp/quicklisp/app.asd,当我执行
(require 'asdf)
(asdf:operate 'asdf:load-op :app)
Run Code Online (Sandbox Code Playgroud)
它看起来像编译的东西,但我无法在任何地方找到二进制文件/目标文件.
如何构建我的项目,以便将其复制到另一台没有安装CL并运行的机器上?
我在osx上使用sbcl 1.1.13和asdf 3.0.2.
我试图使用lisp代码制作可执行文件.但是我根本无法编译 lisp文件,因为hellowolrd在加载helloworld系统 之前没有包
;; test.lisp
(asdf:load-system :helloworld)
(defun main()
(helloworld:start))
Run Code Online (Sandbox Code Playgroud)
当然,我制作了helloworld系统并将其放入~/quicklisp/local-projects/.helloworld系统成功加载没有错误.
;; ~/quicklisp/local-projects/helloworld/helloworld.asd
(asdf:defsystem helloworld
:version "1.0"
:components ((:file "package")))
;; ~/quicklisp/local-projects/helloworld/package.lisp
(defpackage :helloworld
(:use :common-lisp :asdf)
(:export :start))
(in-package :helloworld)
(defun start()
(format t "Welcome, ASDF"))
Run Code Online (Sandbox Code Playgroud)
我想编译test.lisp没有显式加载.我也试过use-package和defpackage,但失败了.
;; test.lisp
(asdf:load-system :helloworld)
(use-package :helloworld)
(defun main()
(helloworld:start))
;; test.lisp
(asdf:load-system :helloworld)
(defpackage :test
(:use :cl :asdf)
(:export :main))
(in-package :test)
(defun main()
(helloworld:start)) …Run Code Online (Sandbox Code Playgroud) 我正在尝试学习如何使用Common-Lisp的asdf,我有以下代码:
(asdf:defsystem example
:serial t
:components ((:file "first")
(:file "second")))
Run Code Online (Sandbox Code Playgroud)
但是,我一直收到错误:
Condition of type: SIMPLE-ERROR
Invalid relative pathname #P"first.lisp" for component ("example" "first")
Run Code Online (Sandbox Code Playgroud)
我在与这两个Lisp文件相同的目录中启动repl,但我不明白为什么会出现错误.我错过了什么?我在Windows上使用ECL
我正在尝试使用已经在package.lisp中定义的asdf创建一个名为“ a”(要学习)的基本软件包,而我的主文件a.lisp的开头是:
(in-package :a)
...
Run Code Online (Sandbox Code Playgroud)
如果我正在开发模块,我只是想通过执行Mx slime-eval-buffer之类的方法将整个缓冲区评估到SLIME REPL中,但这不会发生,在运行该命令后,我仍然处于cl -用户包:
;;; from a.lisp
A> (in-package :a)
#<PACKAGE "A">
CL-USER> <--- should have stayed in A>
Run Code Online (Sandbox Code Playgroud)
但是,如果我自己将整个代码粘贴到SLIME REPL中,则它已经可以工作了。一遍又一遍地粘贴很多代码对于交互式开发来说根本不是一件好事。
你能帮我吗?您是否对我的问题有任何建议,或者您通常如何应对?
谢谢。
我正在尝试使用asdf安装Erlang(及更高版本的Elixir),但是jinterface由于安装过程似乎冻结而出现错误:
? ~ asdf install erlang 22.1.1
Downloading OTP-22.1.1.tar.gz to /Users/me/.asdf/plugins/erlang/kerl-home/archives
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 122 0 122 0 0 320 0 --:--:-- --:--:-- --:--:-- 321
100 52.4M 0 52.4M 0 0 7604k 0 --:--:-- 0:00:07 --:--:-- 9203k
Extracting source code
Building Erlang/OTP 22.1.1 (asdf_22.1.1), please wait...
APPLICATIONS DISABLED (See: /Users/me/.asdf/plugins/erlang/kerl-home/builds/asdf_22.1.1/otp_build_22.1.1.log)
* jinterface : Java compiler disabled by user
DOCUMENTATION INFORMATION (See: /Users/me/.asdf/plugins/erlang/kerl-home/builds/asdf_22.1.1/otp_build_22.1.1.log) …Run Code Online (Sandbox Code Playgroud) 您可以在ASDF系统中设置的其他内容是:version属性.有没有办法在运行时读取它?有点像(system-version :my-system-name)?
我知道有asdf:version-satisfies和asdf:asdf-version,但也做我想做的在这种情况下.
我目前正在Common Lisp中构建一个项目,并且正在使用ASDF。但是,我遇到了一些困难。即,当我运行时asdf:compile-system,它似乎可以编译。这样我就可以asdf:load-system成功。但是,位于某些文件中的某些功能仍未定义。为了让他们知道,我必须手动导航到该文件并进行编译。
这是系统的声明。有人可以告诉我我做错了什么吗?
(defsystem "xxx-xxxx"
:version "0.1.0"
:author ""
:license ""
:depends-on ("cl-mongo" "hunchentoot" "clack" "ningle" "cl-json" "hermetic" "lack-middleware-session" "cl-markup")
:components ((:module "src"
:components
((:file "packages")
(:file "lisp-utils")
(:file "xxx-xxxx" :depends-on ("packages"))
(:file "database" :depends-on ("packages"))
(:file "database-config" :depends-on ("packages"))
(:file "server" :depends-on ("packages"))
(:file "clack" :depends-on ("packages"))
(:file "routes/activities" :depends-on ("packages"))
(:file "route-processors" :depends-on ("packages")))))
:description ""
:long-description
#.(read-file-string
(subpathname *load-pathname* "README.markdown"))
:in-order-to ((test-op (test-op "xxx-xxxx-test"))))
Run Code Online (Sandbox Code Playgroud)
特别是,我在文件routes/activities和可能存在问题route-processors。