2014-05-10 7 views
0

공통 lisp로 빌드 도구 asdf을 사용하는 데 문제가 있습니다.asdf building 및 Common Lisp

(defpackage :fractals 
    (:use :cl :asdf :cl-opengl :cl-glu :cl-glut) 
    (:export :frac-tree :draw-tree)) 
(in-package :fractals) 
;---------------------------------------------------------- 
(defsystem fractals 
    :name "fractals" 
    :version "0.0.0" 
    :serial t 
    :components ((:file "frac-tree") 
      (:file "fractal-lab"))) 

모두 ffiles fract-tree.lispfractal-lab.lisp 파일의 맨 처음에 문 (in-package :fractals)이 : 여기 내 fractals.asd 파일입니다. 그러나 나는 자동으로 오류가 발생했습니다 The name "CL-OPENGL" does not designate any package. 이것이 잘못된 이유를 이해하지 못합니다. ~/.config/common-lisp/source-registry.conf.d/ 나는 다음과 같은 포함 fractals2.conf라는 파일 위치 :

(:directory "~/lisp_proj/fractals2/") 

이이를 나는이 라이브러리를 포함하지 않는 경우 또한, 나는 수동으로 나 자신을 필요로 할 ... 나는라는 디렉토리를 생성 위의 그림과 같이 fractals.asd 파일의 디렉토리. 분명히 이것은 내 사용자 정의 시스템이있는 asdf에게 알려야합니다. 나는 this 자습서를 따라 갔다.

  • 요약하면 수동으로로드 할 필요가 없도록 asdf을 어떻게 사용자 정의 시스템을 찾을 수 있습니까?

모든 도움에 감사드립니다!

+0

CL-OPENGL 패키지가 어딘지에 정의되어 있습니까? –

답변

2

defsystem에 의존성을 :depends-on 절로 선언해야합니다. defpackage:use 절은 이미로드 된 패키지의 이름 만 사용 가능하게하지만로드하지는 않습니다.

현재 .asd 파일에는 주 패키지의 defpackage이 포함되어서는 안됩니다. defsystem을 실행하기위한 특별 패키지를 선언하는 것이 합리적이지만, 일반 패키지는 .lisp 개의 파일로 선언되어야합니다.

편집 : 두 번째 문제도 해결 될 수 있습니다. 그렇지 않은 경우 ASDF가 경로의 ~ 문자를 자동으로 확장하지 않기 때문일 수 있습니다. 이 경우 홈 디렉토리의 실제 경로로 바꾸십시오. 당신이 정의되지 않은 도형을 사용하고 같은

+0

굉장해! 나는'quickload' 라이브러리에서 내 의존성을 제외하고는 모든 것을 가지고 있습니다.'(ql : quickload 'zpng)'와 같은 라이브러리를로드하고 있었습니까? – CodeKingPlusPlus

+0

제 경험상, Quicklisp은 ASDF로 설치 한 라이브러리를 등록합니다. 그래서 다른 것들처럼': depends-on' 절에서로드 할 수 있어야합니다. 시도 할 때 오류 메시지가 나타 납니까? –

0

1- 보이는 : 대신 항공 자위대의 defsystem : defsystem

자위대 DSL이 지시 받아 2- (: 디렉토리 (: 홈 "lisp_proj/fractals_2"))

을 3 3.1.2부터 ~/common-lisp/

4- 신의 술을 위해서, RTFM!