0
您可以在ASDF系統中設置:version
屬性。有沒有辦法在運行時讀取它?像(system-version :my-system-name)
?獲取ASDF系統的版本
我知道有asdf:version-satisfies
和asdf:asdf-version
,但在這種情況下,我也不想做這件事。
您可以在ASDF系統中設置:version
屬性。有沒有辦法在運行時讀取它?像(system-version :my-system-name)
?獲取ASDF系統的版本
我知道有asdf:version-satisfies
和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
'(插槽值(ASDF:找到系統)「ASDF:版本)' –
使用'插槽-value'是抽象破解,不像基於'component-version'的方法,所以後者更好。至少在理論上,有人可以寫一個不能訪問槽的'asdf:component-version'的方法,在這種情況下,直接檢查槽的代碼將會丟失。 –