2013-03-01 20 views
6

Tôi có định nghĩa gói sau. Làm cách nào để biên dịch tất cả các thành phần đệ quy, cũng như phụ thuộc của chúng tới nguồn C? Nói cách khác, tôi muốn giữ lại tất cả các tệp C đi vào xây dựng tệp thực thi gốc.ECL - kết xuất nguồn c cho mọi đơn vị biên dịch và các phụ thuộc của nó?

Hiện tại, tôi sử dụng (asdf:make-build :example nhưng điều đó không để lại bất kỳ tệp C nào xung quanh.

Tôi đang mong đợi để xem

simple.c 
simple.h 
simple.data 
cl-opengl.c 
cl-opengl.h 
... 

example.asd:

(defsystem :example 
    :depends-on (:cl-opengl :cl-glu :cl-glut) 
    :serial t 
    :components ((:file "simple"))) 

cl-opengl.asd:

(defsystem cl-opengl 
    :description "Common Lisp bindings to OpenGL." 
    :depends-on (cffi alexandria) 
    :components 
    ((:module "gl" 
    :components 
    ((:file "bindings-package") 
    (:file "constants" :depends-on ("bindings-package")) 
    (:file "library" :depends-on ("bindings-package")) 
    (:file "bindings" :depends-on ("bindings-package" "constants" "library")) 
    ... 
+0

bạn có quản lý để biên dịch các tệp .c thành tệp thực thi độc lập không? (những gì tôi đang cố gắng để đạt được là để biên dịch chéo các tập tin được tạo ra .c với một gcc biên dịch chéo) –

Trả lời

7

Như đã giải thích trong ECL danh sách gửi thư, thiết lập c :: * xóa tệp * thành NIL sẽ ngăn trình biên dịch xóa các tệp C trung gian. Chúng có phần mở rộng * .c, * .eclh (tiêu đề) và * .data (định nghĩa văn bản của các đối tượng), nhưng tên của chúng được xoa bóp bằng ASDF (chúng nhận được một số tiền tố ASRF-prefix IIRC) và chúng không được tạo ra nơi các nguồn lisp sống , nhưng thay vào đó là thư mục bộ nhớ cache của ASDF (thường ~/.cache/common-lisp/ecl -...)

+0

cảm ơn amigo! . –

Các vấn đề liên quan