mieki256's diary



2017/11/22(水) [n年前の日記]

#1 [lua][windows] luarocksとluacheckをWindowsにインストール

luarocksなるものをインストールすると、lua関係の便利なアレコレが簡単にインストールできるようになるらしい。更に、luarocks を使って luacheck をインストールすることで、luaのソースファイルを静的チェックできるようで。試しにWindows10 x64上でインストールしてみようかなと。

以下を参考にして作業。

_にっき♪: luacheck
_LuaとLuaRocksのWindowsインストール
_Installation instructions for Windows - luarocks/luarocks Wiki

luarocksをインストール。 :

インストールには、Lua とリンクライブラリとやらが必要。以下の2つを _Lua Binaries Download からDLして解凍。インストール。
lua-5.3.4_Win32_bin.zip
lua-5.3.4_Win32_dllw4_lib.zip

また、途中でコンパイルをするから、Visual Studio が必要になるっぽい。自分の環境は Visual Studio 2015 Community をインストールしてあるので、スタートメニューから、開発者コマンドプロンプトを実行して、その上で作業した。

_LuaRocks releases から、luarocks-2.4.3-win32.zip をDL、解凍。luaにPATHが通ってる状態で以下を打って luarocks をインストール。
install /LUA Luaインストール場所\ /P LuaRocksインストール場所
今回は以下のフォルダを指定。
install /LUA D:\Dev\lua_x86\ /P D:\Dev\luarocks

気を利かせたつもりで、事前にLuaRocksインストール場所を作成しておくと、「指定されたフォルダが既にあるからインストールできねえ」と文句を言われる。事前に作成しないほうがヨサゲ。

luarocks.bat その他が作られた。環境変数 PATH に通しておく。

luacheckをインストール。 :

luarocks install luacheck で、luacheck がインストールできるはずなのだけど…。
D:\Dev\lua_x86>luarocks install luacheck

Installing https://luarocks.org/luacheck-0.21.2-1.src.rock
Missing dependencies for luacheck 0.21.2-1:
   luafilesystem >= 1.6.3 (not installed)
luacheck 0.21.2-1 depends on luafilesystem >= 1.6.3 (not installed)
Installing https://luarocks.org/luafilesystem-1.7.0-2.src.rock
cl /nologo /MD /O2 -c -Fosrc/lfs.obj -ID:/Dev/lua_x86/include src/lfs.c
lfs.c
link -dll -def:lfs.def -out:lfs.dll D:/Dev/lua_x86/lua53.dll src/lfs.obj
Microsoft (R) Incremental Linker Version 14.00.24215.1
Copyright (C) Microsoft Corporation.  All rights reserved.
D:\Dev\lua_x86\lua53.dll : fatal error LNK1107: ファイルが無効であるか、または壊れています: 0x330 を読み取れません。
Error: Failed installing dependency: https://luarocks.org/luafilesystem-1.7.0-2.src.rock - Build error: Failed compiling module lfs.dll

lfs.dll とやらが作れないぞ、と怒られてしまった。

_installing on windows fails with LNK1107 (lua 5.2) - Issue #82 - keplerproject/luafilesystem

Visual Studio 2015 (VC14) と一致する何かしらのファイル群が必要らしい…。

_LuaBinaries - Browse /5.3.4/Windows Libraries/Static から、lua-5.3.4_Win32_vc14_lib.zip をDLして解凍。Luaインストール場所にコピー。どうも lua53.lib というファイルが必要だったらしい。

luarocksインストール場所\config-5.3.lua の修正も必要。中の一部を以下に変更。
    LUALIB = 'lua53.dll'
     ↓
    LUALIB = 'lua53.lib'

この状態で再度インストールを試す。
luarocks install luafilesystem
luarocks install luacheck

Luaインストール場所\systree\bin\luacheck.bat ができた。Luaインストール場所の直下にコピー。

動作確認。 :

luacheck hoge.lua でチェックができる。

が、love2d用のluaソースを渡すと、「loveって何だ? そんなの知らねえよ!」と山ほど怒られる。これでは…使えないな…。

この記事へのツッコミ

Re: luarocksとluacheckをWindowsにインストール by 名無しさん    2022/10/21 23:34
突然のコメント失礼いたします.
本記事を参考にLuaの導入をしようとしています.(Win10 62bit版 VS2017)です)
installコマンドをコマンドプロンプト上で実行できません.
PATHを通せばいいのかな,と考え調べてみたのですがwingetのサブコマンドとしてのinstallしか出てきません.
もしよろしければ>install /LUA path /P PATHの部分をどのように実行されているかお教えいただけませんでしょうか?
Re: luarocksとluacheckをWindowsにインストール by mieki256    2022/10/26 00:24
> wingetのサブコマンドとしてのinstallしか出てきません.

luarocks-2.4.3-win32.zip を解凍すると、中に install.bat が入っていて、当時はソレを呼び出してインストール処理をしていたようです。
luarocks-x.x.x-windows-32.zip ではなくて、
luarocks-x.x.x-win32.zip を入手する必要があります。

> install /LUA path /P PATHの部分をどのように実行されているか

記事中にもメモしてありますが以下の指定で実行していたようです。

install /LUA D:\Dev\lua_x86\ /P D:\Dev\luarocks

D:\Dev\lua_x86\ に lua.exe その他が既に入っていて、
D:\Dev\luarocks\ に luarocks をインストールしようとしています。

ただ、私自身は、後々 hererocks というツールを使って
Lua と Luarocks をビルドして使う形に移行したようです…。
2021/06/19頃の日記に、その旨メモしてありました…。

#2 [lua][windows] Visual Studio Code にLua関係の拡張をインストールしてみたり

Windows10 x64 + Visual Studio Code 1.18.1 に、Lua関係の拡張をインストールしてみたり。

_vscode-lua - Visual Studio Marketplace
_LOVE - Visual Studio Marketplace

Alt + L で love2d を実行できる、らしい。

そこそこ補完が効いてくれる模様。

#3 [lua][emacs] Emacs(NT Emacs)にLuaとlove2d関係のauto-completeをインストール

Lua関係の auto-completeパッケージを見かけたので試しにインストール。Lua用のソースを書く際に補完してくれるようになるっぽい。

環境は Windows10 x64 + NTEmacs 24.5.1。 _Lua-mode と auto-complete はインストール済み。

_rolpereira/auto-complete-lua.el: Auto-complete builtin Lua functions in Emacs
_rolpereira/auto-complete-love.el: Auto-complete LOVE functions in Emacs

それぞれzipファイルをDLして解凍。

以下のファイルやフォルダを、Emacsからパスが通ったところにコピー。
auto-complete-lua.el
auto-complete-lua-tests.el
lua-documentation
auto-complete-love.el
auto-complete-love-tests.el

~/.emacs に以下を記述。

(require 'auto-complete-lua)
;; (add-hook 'lua-mode-hook '(lambda ()
;;                             (setq ac-sources '(ac-source-lua))
;;                             (auto-complete-mode 1)))

(require 'auto-complete-love)
(add-hook 'lua-mode-hook '(lambda ()
                            (setq ac-sources '(ac-source-love))
                            ; Uncomment only if you're using `auto-complete-lua' (see below)
                            (push ac-source-lua ac-sources)
                            (auto-complete-mode 1)))

auto-complete-lua と auto-complete-love の両方を入れる場合、auto-complete-love側の設定だけをしておけばいいらしい。最初、両方の設定を書いてしまったら補完がちゃんと動かなかった。

参考までに、~/.emacs のLua関係の設定部分をメモ。
;; ----------------------------------------
;; lua-mode

;; This snippet enables lua-mode
;; This line is not necessary, if lua-mode.el is already on your load-path
;; (add-to-list 'load-path "/path/to/directory/where/lua-mode-el/resides")

(autoload 'lua-mode "lua-mode" "Lua editing mode." t)
(add-to-list 'auto-mode-alist '("\\.lua$" . lua-mode))
(add-to-list 'interpreter-mode-alist '("lua" . lua-mode))

(setq lua-indent-level 2)

(add-hook 'lua-mode-hook
          '(lambda ()
             (abbrev-mode 1)
             (electric-pair-mode t)
             (electric-indent-mode t)
             (electric-layout-mode t)
             ;; ||も括弧の補完の対象にする
             ;; (add-to-list 'electric-pair-pairs '(?| . ?|))
             ))

;; love2d love-minor-mode
(require 'love-minor-mode)

(require 'auto-complete-lua)
;; (add-hook 'lua-mode-hook '(lambda ()
;;                             (setq ac-sources '(ac-source-lua))
;;                             (auto-complete-mode 1)))

(require 'auto-complete-love)
(add-hook 'lua-mode-hook
          '(lambda ()
             (setq ac-sources
                   (append ac-sources '(ac-source-love ac-source-lua)))
             (auto-complete-mode 1)))
ac-sources に、ac-source-love と ac-source-lua を追加する形にしてみた。

ちなみに、love2d-minor-mode は以下で入手できる。

_ejmr/love-minor-mode: An Emacs minor mode for LOVE

以上、1 日分です。

過去ログ表示

Prev - 2017/11 - Next
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project