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 件のコメント:

コメントを投稿

Vimの補完プラグインをインストール。その4

Vimの補完プラグインをインストール。その3 で、 ddc-tabnine が使えそうです、などと書いたのですが、早速やってみました。 まず、tabnineのバイナリを用意しないといけません。がどうにもTabNineのサイトがわかりにくいので、 tabnine-nvim にあるダ...