CLISPで(ql:quickload :qt)の実行エラーを解決したい
- 評価
- クリップ 1
- VIEW 1,776
■やりたい事
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")
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
+1
直接的な原因は、Closer to mopが ASDF3 を採用していて、CLISPのASDFが3でないためです。
CLISPは2010年辺りから開発が停滞していますので色々と取り残されつつあります。
CLISPであれこれするよりは、SBCL等の方が楽かもしれません。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+1
g000001さんのご回答の通りなのですが、
:if-feature
はASDF 3で追加されたオプションです。ASDF 3自体はCLISPで動作するのですが、CLISPにいまだ古いASDFが含まれていたり、ASDFが含まれていなかったりするとのこと (ASDF公式サイト「Supported Implementations」参照)。
上記の公式サイトの説明によれば、CLISPでは「ASDFを最新のものに置き換えるか、アップグレードする」ことで対応できるとのことです。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.10%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
ikedas
2017/02/28 11:47
clispとquicklispのバージョンをご質問に明記して下さいませんか (できるだけ正確に)。
kamuycikap
2017/03/01 17:59
回答ありがとうございます。バージョンを明記させて頂きました。