2013-03-01 10 views
6

Ho la seguente definizione di pacchetto. Come faccio a compilare tutti i componenti in modo ricorsivo, e le loro dipendenze alla fonte C? In altre parole, voglio conservare tutti i file C che vanno a creare l'eseguibile nativo.ECL - dump c source per ogni unità di compilazione e le sue dipendenze?

Attualmente, io uso (asdf:make-build :example ma che non lascia alcun file C in giro.

mi aspetto di vedere

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

sei riuscito a compilare i file .c risultanti in un eseguibile standalone? (Quello che sto cercando di ottenere è di compilare a croce i file .c generati con una gcc cross-compiling) –

risposta

7

Come spiegato nella ECL mailing list, impostando c :: * delete-files * su NIL impedirà al compilatore di eliminare i file C intermedi. Hanno estensioni * .c, * .eclh (intestazione) e * .data (definizioni di testo degli oggetti), ma i loro nomi sono massaggiati da ASDF (ottengono alcuni prefissi ASDF - IIRC) e non sono creati dove vivono le sorgenti Lisp ma piuttosto nella directory della cache di ASDF (tipicamente ~/.cache/common-lisp/ecl -...)

+0

grazie amigo! . –

Problemi correlati