vimproc.vimをビルドする。

deinで "call dein#update()" したらエラーがいくつもでて、こちらではいじっていないのに食い違いがあるからアップデートできないよということになったので、 "~/.cache/dein" をまるごと削除してクリーンインストールしました。

まず dein.vim をページのとおりにインストールし、次に "call dein#install()" するだけですが、vimproc.vim がエラーを吐いてきました。makeできませんよ、と。

Neovim や Vim は Visual Studio でビルドされているので、vimproc.vim の DLL も Visual Studio でビルドします。手元のバージョンは Visual Studio Community 2017 15.9.11 です。そういえば Visual Studio 2019 もリリースされましたね。

dein#install() によってソース自体はダウンロードされているので、まずは VS2017用 x64 Native Tools コマンドプロンプトを開き、"~/.cache/dein/repos/github.com/Shougo/vimproc" に移動します。

そこには "make_msvc.mak" があるので、"nmake -f make_msvc.mak" します。
$ nmake -f make_msvc.mak CPU=AMD64

Microsoft(R) Program Maintenance Utility Version 14.16.27030.1
Copyright (C) Microsoft Corporation.  All rights reserved.

make_msvc.mak(25) : fatal error U1052: ファイル 'Win32.mak' が見つかりません。
Stop.
ああ、そういえばそんなのが前にも…と思い出しました。
Win32.mak は Windows SDK 7.1A に含まれています。なので、
$ set SDK_INCLUDE_DIR=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include
$ nmake -f make_msvc.mak

Microsoft(R) Program Maintenance Utility Version 14.16.27030.1
Copyright (C) Microsoft Corporation.  All rights reserved.

        IF NOT EXIST src\objAMD64/nul  MKDIR src\objAMD64
        cl -Zi -Od -DDEBUG -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_AMD64_=1 -DWIN64 -D_WIN64  -DWIN32 -D_WIN32 -W4 -D_WINNT -D_WIN32_WINNT=0x0500 -DNTDDI_VERSION=0x05000000 -D_WIN32_IE=0x0500 -DWINVER=0x0500  -D_MT -D_DLL -MDd  -D_NDEBUG -D_CRT_SECURE_NO_WARNINGS=1 -D_BIND_TO_CURRENT_VCLIBS_VERSION=1 /wd4100 /wd4127 /O2 -Fdsrc\  -Fosrc\objAMD64\ src\proc_w32.c
cl : コマンド ライン warning D9025 : '/Od' より '/O2' が優先されます。
proc_w32.c
c:\users\kats\.cache\dein\repos\github.com\shougo\vimproc\src\vimstack.c(286): warning C4267: '=': 'size_t' から 'unsigned int' に変換しました。データが失われているかもしれません。
src\proc_w32.c(697): warning C4018: '>=': signed と unsigned の数値を比較しようとしました。
        link /NOLOGO /DEBUG /DEBUGTYPE:cv  /INCREMENTAL:NO /NOLOGO -entry:_DllMainCRTStartup -dll kernel32.lib  ws2_32.lib mswsock.lib advapi32.lib   /OUT:lib\vimproc_win64.dll src\objAMD64/proc_w32.obj shell32.lib
   ライブラリ lib\vimproc_win64.lib とオブジェクト lib\vimproc_win64.exp を作成中
        IF EXIST lib\vimproc_win64.dll.manifest  mt -nologo -manifest lib\vimproc_win64.dll.manifest -outputresource:lib\vimproc_win64.dll;2
なにやら警告が出ていますが、気にしない。

すると、"~/.cache/dein/repos/github.com/Shougo/vimproc/lib" に DLL ファイルができているのでビルドは無事終了です。

Neovimを起動したら、:let result=vimproc#system('ls') などとしたあとで :echo result して結果が入っていれば OK です。

0 件のコメント:

コメントを投稿

Windowsでシンボリックリンクを試してみる。

きっかけは、1つのファイルを別の名前で起動したら違う動きになるようなスクリプトを書く、でした。  busybox なんかでは、同じ実行形式ファイルの名前を、lsにすればlsと同じ、cpとすればcpと同じ動作をするようにしてますが、Pythonスクリプトでそれと同じように argv...