2013-04-22 59 views
1

我有泥配置上的Arch Linux的Common Lisp(SBCL)開發的emacs。事情是,我現在也想開始使用OpenGL,所以我已經安裝了cl-opengl來提供必要的綁定。我還在.local/share/common-lisp上建立了一個到/ usr/share/common-lisp的符號鏈接(我應該能夠以這種方式使用ASDF加載所有系統)。「包GLUT不存在」,即使安裝在Arch Linux的CL-的OpenGL

然而,當我嘗試編譯在泥下面的代碼(使用抄送CK)

(require :asdf)     ; need ASDF to load other things 
(asdf:load-system :cl-opengl) ; load OpenGL bindings 
(asdf:load-system :cl-glu)  ; load GLU bindings 
(asdf:load-system :cl-glut)  ; load GLUT bindings 

(defclass my-window (glut:window) 
() 
    (:default-initargs :width 400 :height 300 
        :title "My Window Title" 
        :x 100 :y 100 
        :mode '(:double :rgb :depth))) 

(defmethod glut:display-window :before ((win my-window)) 
    (gl:shade-model :smooth)  ; enables smooth shading 
    (gl:clear-color 0 0 0 0)  ; background will be black 
    (gl:clear-depth 1)    ; clear buffer to maximum depth 
    (gl:enable :depth-test)   ; enable depth testing 
    (gl:depth-func :lequal)   ; okay to write pixel if its depth 
            ; is less-than-or-equal to the 
            ; depth currently written 
            ; really nice perspective correction 
    (gl:hint :perspective-correction-hint :nicest) 
) 

(defmethod glut:display ((win my-window)) 
    (gl:clear :color-buffer-bit :depth-buffer-bit) 
    (gl:load-identity)) 

(defmethod glut:reshape ((win my-window) width height) 
    (gl:viewport 0 0 width height) ; reset the current viewport 
    (gl:matrix-mode :projection) ; select the projection matrix 
    (gl:load-identity)    ; reset the matrix 

    ;; set perspective based on window aspect ratio 
    (glu:perspective 45 (/ width (max height 1)) 1/10 100) 
    (gl:matrix-mode :modelview)  ; select the modelview matrix 
    (gl:load-identity)    ; reset the matrix 
) 

(glut:display-window (make-instance 'my-window)) 

我得到以下錯誤:

READ error during COMPILE-FILE: 
Package GLUT does not exist. 

即使CL-glut.asd中存在的/ usr /共享/共口齒不清/系統。

我在做什麼錯?

+0

的可能重複的[無法從泥運行時查找包,而是從命令行是OK](http://stackoverflow.com/questions/15029420/not-able-to-find-package-when-running -from-粘液 - 丁從-命令行-是-OK) – 2013-04-22 21:31:16

回答

3

ASDF:LOAD-SYSTEM不生效,直到加載時間,因爲它是一個普通的功能。如果您希望在編譯時發生該效果,則必須將其包裝在eval-when表單中。但是最好寫一個系統定義,即其他系統。