Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Common lisp 获取ASDF系统的版本_Common Lisp_Asdf - Fatal编程技术网

Common lisp 获取ASDF系统的版本

Common lisp 获取ASDF系统的版本,common-lisp,asdf,Common Lisp,Asdf,在ASDF系统中可以设置的其他内容包括:version属性。有没有办法在运行时读取它?类似于(系统版本:我的系统名称) 我知道有asdf:version满足,也有asdf:asdf version,但在这种情况下,两者都不是我想要的。以下是代码: (defun system-version (system-designator) (let ((system (asdf:find-system system-designator nil))) (when (and system (sl

在ASDF系统中可以设置的其他内容包括
:version
属性。有没有办法在运行时读取它?类似于
(系统版本:我的系统名称)

我知道有
asdf:version满足
,也有
asdf:asdf version
,但在这种情况下,两者都不是我想要的。

以下是代码:

(defun system-version (system-designator)
  (let ((system (asdf:find-system system-designator nil)))
    (when (and system (slot-boundp system 'asdf:version))
      (asdf:component-version system))))
它的工作原理如下:

CL-USER> (system-version :cffi)
"0.10.7.1"
CL-USER> (system-version :foo)
NIL
代码如下:

(defun system-version (system-designator)
  (let ((system (asdf:find-system system-designator nil)))
    (when (and system (slot-boundp system 'asdf:version))
      (asdf:component-version system))))
它的工作原理如下:

CL-USER> (system-version :cffi)
"0.10.7.1"
CL-USER> (system-version :foo)
NIL

(slot value(asdf:find system)'asdf:version)
使用
slot value
会破坏抽象,与基于
组件版本的方法不同,后者更好。至少在理论上,有人可以为不访问插槽的
asdf:component version
编写一个方法,在这种情况下,直接检查插槽的代码将丢失。
(插槽值(asdf:find system)'asdf:version)
使用
插槽值
会破坏抽象,与基于组件版本的方法不同,后者更好。至少在理论上,有人可以为不访问插槽的
asdf:component version
编写一个方法,在这种情况下,直接检查插槽的代码将丢失。