Das OpenGL library for Chez Scheme (derzeit nur Setup für Linux) lädt die GLUT-Bibliothek wie folgt:chez Schema - Last-Shared-Objekt basierend auf der Plattform
(define no-op (load-shared-object "libglut.so.3"))
hier ein link ist auf diesen Code.
Natürlich möchten wir die Bibliothek laden libglut.so.3
auf Linux aber GLUT.framework/GLUT
auf MacOS.
Hier ist ein Beispiel dafür, wie Ypsilon Scheme laden Bibliotheken basierend auf der Plattform:
(define libGLUT
(cond
(on-darwin (load-shared-object "GLUT.framework/GLUT"))
(on-windows (load-shared-object "glut32.dll"))
(on-linux (load-shared-object "libglut.so.3"))
(on-freebsd (load-shared-object "libglut.so"))
(on-openbsd (begin
(load-shared-object "libXmu.so.10.0")
(load-shared-object "libGLU.so.7.0")
(load-shared-object "libglut.so.3.7")))
(else
(assertion-violation
#f
"can not locate GLUT library, unknown operating system"))))
Was ist ein guter Weg, um die Plattform auf Chez Schema zu überprüfen, so dass wir etwas ähnliches in unseren Bindungen für ausländische Bibliotheken tun können?