質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Qt

QtはGUIプログラムの開発で広く使われているクロスプラットフォーム開発のフレームワークです。

LISP

LISPはプログラミング言語の一種であり、関数型言語に分類されています。 特徴として、括弧を多様する独特の構文を持ちます。

Q&A

2回答

2736閲覧

CLISPで(ql:quickload :qt)の実行エラーを解決したい

kamuycikap

総合スコア135

Qt

QtはGUIプログラムの開発で広く使われているクロスプラットフォーム開発のフレームワークです。

LISP

LISPはプログラミング言語の一種であり、関数型言語に分類されています。 特徴として、括弧を多様する独特の構文を持ちます。

0グッド

1クリップ

投稿2017/02/28 01:14

編集2022/01/12 10:55

■やりたい事
CLISPを利用し、Qt4を利用したGUIアプリケーションを作成したい。
CLISPからQt4を利用する為に、CommonQtライブラリを採用する。

■OS環境
OS → Windows7 Pro

■構築済み開発環境
言語 → CommonLisp「CLISP」(GNU CLISP 2.49 (2010-07-07) http://clisp.cons.org/
ライブラリ管理 → quicklisp(version 2016-02-22)
CLISP用Qtライブラリ → CommonQt
GUIFrameWork → Qt4.8.7
Qt4用g++コンパイラ → MinGW

※付属のQt4デモアプリケーションの動作確認済み。
※NTEmacs24.5で開発。slime導入済み。
ただし、最終実行・デバッグについては、slimeではなくCLISPプロンプト上で行っている。

■直面している問題
https://common-lisp.net/project/commonqt/#id105941
ここにあるInstallationに習い、(ql:quickload :qt)を実行すると、下記のエラーが発生。
どのように解決すればよいのか分からずGoogle検索をさまよっています。
原因と解決についてご存知の方、ご教示願います。

-----ここから
;; Loaded file C:\Users\kamuycikap.clisprc.lisp
[1]> (ql:quickload :qt)
To load "qt":
Load 1 ASDF system:
qt
; Loading "qt"

*** - Error while trying to load definition for system closer-mop from
pathname
C:\Users\kamuycikap\quicklisp\dists\quicklisp\software\closer-mop-20170124-gi
t\closer-mop.asd:
MAKE-INSTANCE: illegal keyword/value pair :IF-FEATURE, :ABCL in argument
list.
The allowed keywords are (:NAME
:VERSION :DESCRIPTION :LONG-DESCRIPTION :IN-ORDER-TO :DO-FIRST :PARENT
:PATHNAME :AROUND-COMPILE :ENCODING :PROPERTIES :TYPE)
The following restarts are available:
SKIP :R1 skip (DEFSYSTEM CLOSER-MOP NAME ...)
RETRY :R2 retry (DEFSYSTEM CLOSER-MOP NAME ...)
STOP :R3 stop loading file C:\Users\kamuycikap\quicklisp\dists\quick
lisp\software\closer-mop-20170124-git\closer-mop.asd
REINITIALIZE-SOURCE-REGISTRY-AND-RETRY :R4 Retry finding system closer-mop after
reinitializing the source-registry.
ABORT :R5 Give up on "qt"
ABORT :R6 Abort main loop
Break 1 ASDF0[2]> :R6
[3]>
-----ここまで

★★★2017/03/05 追記★★★
アドバイスいただいた内容が、Debian/Linuxでしたので、私が普段使いしているLinuxMint18でやってみました。
しかし、残念ながら下記の手順を実施したのですが、まだ解決に至っておりません。。。。

<1>
gitにて、asdf3をダウンロード
git clone https://gitlab.common-lisp.net/asdf/asdf.git

<2>
その後、ダウンロードしたフォルダにあるコマンドを実行
bash$ make-asdf.sh

<3>
clispを起動し、lisp関数実行

[1]> (load "./build/asdf.lisp")
;; Loading file build/asdf.lisp ...
; Renamed old ASDF package away to ASDF-2.26
;; Loaded file build/asdf.lisp
T
[2]> (load "asdf.asd")
;; Loading file asdf.asd ...
;; Loaded file asdf.asd
T
[3]> (asdf:load-system :asdf)
...ここに沢山のワーニングが表示される
;; Loaded file /home/k/.cache/common-lisp/clisp-2.49-unix-x86/home/k/Downloads/asdf/build/asdf.fas
0 errors, 595 warnings
0 errors, 0 warnings
T
[4]> (print (list "asdf" (asdf:asdf-version)))

("asdf" "3.2.0.1")
("asdf" "3.2.0.1")
[5]> (asdf:initialize-source-registry)

[6]> (ql:quickload :qt)

*** - Error while trying to load definition for system qt from pathname
/home/k/quicklisp/dists/quicklisp/software/commonqt-20161208-git/qt.asd: Component :TRIVIAL-FEATURES not found
The following restarts are available:
RETRY :R1 Retry ASDF operation.
CLEAR-CONFIGURATION-AND-RETRY :R2 Retry ASDF operation after resetting the configuration.
SKIP :R3 skip (EVAL-WHEN # #)
RETRY :R4 retry (EVAL-WHEN # #)
STOP :R5 stop loading file /home/k/quicklisp/dists/quicklisp/software/commonqt-20161208-git/qt.asd
REINITIALIZE-SOURCE-REGISTRY-AND-RETRY :R6 Retry finding system qt after reinitializing the source-registry.
ABORT :R7 Give up on "qt"
ABORT :R8 Abort main loop

★★★2017/03/25 追記★★★
Linux環境ではなく、Windows環境で実施。
Linuxで通った所がWindowsでは通らず・・・・
下記の[1]で読み込んでいるasdf.asdは、asdf3のtarボールを展開して取り出したもの。
私の力量では、LinuxでもWindowsでもCommonQTを動かすことは出来なさそうです。

--- 実施コマンド
[1]> (load "asdf.asd")
;; Loading file asdf.asd ...
;; Loaded file asdf.asd
T
[2]> (asdf:load-system :asdf)

*** - Internal error: statement in file "../src/pathname.d", line 6144 has
been reached!!
Please see http://clisp.cons.org/impnotes/faq.html#faq-bugs for bug
reporting instructions.
The following restarts are available:
RETRY :R1 Retry compiling #<CL-SOURCE-FILE "asdf" "build" "asdf">.

ACCEPT :R2 Continue, treating compiling #<CL-SOURCE-FILE "asdf" "bu
ild" "asdf"> as having been successful.
ABORT :R3 Abort main loop
Break 1 [3]> :R3
0 errors, 0 warnings
[4]> (print (list "asdf" (asdf:asdf-version)))

("asdf" "2.26")
("asdf" "2.26")

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ikedas

2017/02/28 02:47

clispとquicklispのバージョンをご質問に明記して下さいませんか (できるだけ正確に)。
kamuycikap

2017/03/01 08:59

回答ありがとうございます。バージョンを明記させて頂きました。
guest

回答2

0

g000001さんのご回答の通りなのですが、

:if-featureはASDF 3で追加されたオプションです。ASDF 3自体はCLISPで動作するのですが、CLISPにいまだ古いASDFが含まれていたり、ASDFが含まれていなかったりするとのこと (ASDF公式サイト「Supported Implementations」参照)。

上記の公式サイトの説明によれば、CLISPでは「ASDFを最新のものに置き換えるか、アップグレードする」ことで対応できるとのことです。

投稿2017/02/28 05:31

ikedas

総合スコア4229

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kamuycikap

2017/03/02 02:28 編集

書込みありがとうございます。 ご紹介いただいたWebページの英文を紐解きながら、置き換える方法を調査しています。 未だ、どうやって置き換えるのか方法を見つけられていません。 CLISPにこだわっている理由は、CLISPしか動作しない部分を含んだテストコードをGUI化したいからです。 私の知識が浅く、CLISPだけの実装をSBCLやClozureに移植する事は考えていません。
g000001

2017/03/02 15:48

とりあえず私の手元(Debian GNU/Linux x86_64)では、下記の流れでasdf3が使え、qtを読み込めました ```cl ;; quicklispのasdfもしくはウェブからダウンロードしたasdf.lisp ;; http://beta.quicklisp.org/quickstart/asdf.lisp ;; を読み込み (load "○△□/quicklisp/asdf.lisp") ;; asdf3のasdf.asdを読み込み (load "○△□/asdf/asdf.asd") ;;; ;; asdf3のシステムをロード (asdf:load-system :asdf) (print (list "asdf" (asdf:asdf-version))) ;;; asdfの登録を初期化 (asdf:initialize-source-registry) ;;; quicklisp 読み込み #-quicklisp (let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp" #p"○△□"))) (when (probe-file quicklisp-init) (load quicklisp-init))) ``` 以上を.clisprcにでも書けば動くかもしれません。
ikedas

2017/03/05 11:24

> g000001さん せっかくですから、コメントではなくご自分の回答に加筆していただければ。 teratailでは、コメントの内容は検索でひっかからないようなので。
kamuycikap

2017/03/06 03:54

> g000001さん 大変失礼いたしました。 ;;; asdfの登録を初期化 (asdf:initialize-source-registry) 追記記事の中に、この処理が抜けています。 この処理を実施してみてから、また追記させて頂きます。
kamuycikap

2017/03/06 15:24

;;; asdfの登録を初期化 (asdf:initialize-source-registry) こちらを実施してみましたが、変わらずです。。。。 エラーの内容 「Component :TRIVIAL-FEATURES not found The following restarts are available: 」 これはつまり、コンポーネントが見つからないと行っている・・・のか。 もしかして、私はLinuxMintのQt4インストールに失敗しているのか。。。。 g000001さんと同様に、まず普段使いのLinuxで環境を作ろうとして迷宮に入ってしまいました。 諦めずに調査を続けます。
ikedas

2017/03/06 15:31

qtもインストールし直してみてはどうでしょうか。
kamuycikap

2017/03/06 22:00 編集

> ikedas お世話になります。 アドバイスありがとうございます。 qtもインストールしなおしてみます。 コンパイルするだけで数時間・・・・・ もしかしたら、実施したconfigure -> make -> sudo make installの手順では設定しきれていない何かが問題なのでしょうか。 Qtのインストール過程も後ほどアップさせて頂きます。
guest

0

直接的な原因は、Closer to mopが ASDF3 を採用していて、CLISPのASDFが3でないためです。
CLISPは2010年辺りから開発が停滞していますので色々と取り残されつつあります。
CLISPであれこれするよりは、SBCL等の方が楽かもしれません。

投稿2017/02/28 02:46

g000001

総合スコア65

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kamuycikap

2017/03/02 02:31

回答ありがとうございます。 ASDFが古いことが原因である事を理解できました。 現在、どうやったら置き換えられるのかを調査している状況です。 別の方への回答コメントにも記載いたしましたが、CLISPしか動作しない部分を含んだ現行のコードをGUI化したいと言うのが前提条件にありますので、CLISPで何とかしたいと考えている次第です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問