У меня есть приложение на Lisp (SBCL 1.0.40.0.debian) (myfitnessdata), которое использует следующий код для обработки аргументов командной строки:
(:use :common-lisp)
(:export #:main))
(in-package :myfitnessdata)
(require :sb-posix)
;; snip
(defun main ()
(if (= (length sb-ext:*posix-argv*) 3)
(let ((username (nth 0 sb-ext:*posix-argv*))
(password (nth 1 sb-ext:*posix-argv*))
(path (nth 2 sb-ext:*posix-argv*)))
(scrape (username password path)))
(show-usage)))
Я компилирую это приложение, используя следующий код на Лиспе:
(load "myfitnessdata.lisp")
(save-lisp-and-die "myfitnessdata.bin" :executable t :toplevel 'myfitnessdata:main)
Это создает исполняемый файл, который я могу запустить. Однако список sb-ext:*posix-argv*
всегда пуст. Если я запускаю следующее:
./myfitnessdata.bin myusername mypassword /home/me/data
... тогда все, что я получаю, это инструкции по использованию, произведенные (show-usage)
.
Думаю, мне снова не хватает чего-то простого - может, кто-нибудь подскажет, пожалуйста, как (save-lisp-and-die)
, чтобы результирующий исполняемый файл принимал аргументы командной строки?