環境構築・零

環境構築のその先へ

新版、WindowsでNeovimビルド。

takkii.hatenablog.com

環境

Windows10
Powershell
cmake
git clone https://github.com/neovim/neovim.git
cd neovim
mkdir .deps
cd .deps
cmake -G "Visual Studio 16 2019" ..\third-party -DCMAKE_BUILD_TYPE=Release
cmake --build .

cd ..
mkdir build
cd build
cmake -G "Visual Studio 16 2019" ..\ -DCMAKE_BUILD_TYPE=Release

"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\devenv.exe" nvim.sln

visualstudio2019側でReleaseとしてビルドする。

※ プロジェクト / ソリューション上でビルドを実行、

2回ビルドを実行する、管理者権限はいらないはず。
2度目で、nvim.exeがビルドされるので、これでneovim-qtが起動できるようになる。

※ その他はリンク先に書いてあります。

新版では、Luaの環境作りが必要です。

http://luarocks.github.io/luarocks/releases/

luarocks-3.3.1-win32.zip ( legacy Windows package, includes Lua 5.1 )

ダウンロードします。

Mingw 32bitの環境を作ります

MinGW - Minimalist GNU for Windows - Browse /Installer at SourceForge.net

ダウンロード

mingw-get-setup.exe

インストーラGUI)からinstall

mingw-developer-toolkit
mingw32-base
mingw32-gcc-g++ 
msys-base
mingw32-libz (dev)

PATHを環境変数に追加

C:\MinGW\bin
C:\MinGW\msys\1.0\bin

PATHを環境変数に追加

luarocks-3.3.1-win32.zip 解凍先( 例 ) C:\Users\takkii\luarocks-3.3.1-win32\win32\lua5.1\bin
luarocks-3.3.1-win32.zip 解凍先( 例 ) C:\Users\takkii\luarocks-3.3.1-win32\win32\lua5.1\lib
C:\Program Files (x86)\LuaRocks

luarocks-3.3.1-win32/install.bat を実行します。

cd luarocks-3.3.1-win32.zip 解凍先( 例 ) C:\Users\takkii\luarocks-3.3.1-win32

.\install.bat

※ すでにLuaがPATHに通っているときはLuaのPATHを削除してください。

 ∟ 古いLuarocksが生成されてしまう原因になります。

インストールします

luarocks install lpeg
luarocks install mpack
luarocks install luabitop

インストール後

luarocks-3.3.1-win32.zip 解凍先( 例 ) C:\Users\takkii\luarocks-3.3.1-win32\win32\lua5.1\lib\lua\5.1

bit.dll
lpeg.dll
mpack.dll

コピーします

luarocks-3.3.1-win32.zip 解凍先( 例 ) C:\Users\takkii\luarocks-3.3.1-win32\win32\lua5.1\bin

これでcmakeでビルドエラーを起こす、

cmake -G "Visual Studio 16 2019" ..\ -DCMAKE_BUILD_TYPE=Release

部分を通りすぎていきます。あとは流れ通りです。

"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\devenv.exe" nvim.sln

Visual Studio 2019が起動しないとき、

(GitHubからクローンした場所)\neovim\build\nvim.sln

Visual Studio 2019で上記ソリューションを開いて、
Release、x64で一番上のソリューションを選択、
すべてのプロジェクトをビルドします。

PermissionErrorがでるときは、管理者でビルドします。1~2回ビルドして様子見ます。

github.com

Neovim-qtを無事起動できたとき、

C:\Program Files (x86)\nvim\share\nvim\runtime\syntax

PATHが見当たらないよとメッセージが流れたら、

上記リンクから、nvim-win64.zipを解凍、

まずC:\Program Files (x86)\nvimフォルダを作成、

解凍したフォルダ/shareフォルダを

C:\Program Files (x86)\nvimに移動します。

設置し起動しなおすとメッセージが消えます。

※ いくつか方法がありますが、シンプルな手順を残します。

WindowsでNeovimビルドしてみませんか

mingw32環境がもしmsys2(64bit)で同じことをしてもビルドできません。あとビルド後にdllファイルがなくてクラッシュするならば、記事最初のリンクをみれば対処が書かれています。わかってしまえば簡単なことですが、わかるまでに時間がかかりました。再現性を確保するためにもう1度同じ事をしてみました。NeovimをWindowsで使うことにメリットは多いです。マシンスペックにもよりますが、ビルドには時間がかかります。珈琲などを飲みながら終わるのを待つことも作業効率をあげるために必要です。記事が今後の参考になれば幸いです。

kaoriya-vimでrubyを設定するには

令和2年3月13日夜中2時頃、能登半島で大きな地震がありました。

飛び起きて、NHK+で情報を確認し、いつでも避難できるように用意していました。

結果的には、被害も個人的にはありませんでした。

今日は、香り屋Vimの話をします。

※ 過去、登壇者に選ばれなかった話は忘れてくれれば助かります。

takkii.hatenablog.com

∟ NeovimのWindowsビルドはもう通らない。

LuaやLuarocksのまわりmingw32-gccを64bit環境で探してエラーになりますね。

※ neovimのwindowsビルド、通りました。後日、記事にします。

個人的な設定なので参考程度に。

該当箇所

設定 (Rubyは2.6.5、RubyInstaller2を使う例)

環境変数

RUBYインストール先/bin
RUBYインストール先/bin/ruby_builtin_dlls

設定します

let g:ruby_host_prog='RUBYインストール先/bin/ruby.exe'

set rubydll='RUBYインストール先/bin/x64-msvcrt-ruby260.dll'

上記は要りません。

これで、vim-ruby-debuggerの動作がみれると思います。

手順

:echo has("signs") && has("clientserver") && has("ruby") && v:version > 700

1を返すと思います。

gem install debugger-xml

インストールします。他の細かいのはGitHubページの英語を読もう。

これでRubyのデバッガが手に入りました。rubocop以外にも動作・構文チェックできますね。

日めくり多様な機能

github.com

過去にWeb用として、日めくりというRubyGemsを作りました。

rubygems.org

これをC#Javaで出力結果を同じように作ってみました。

ちまたでは「○○チャレンジ」というのが流行っていたこともありました。

「日めくりチャレンジ」と名付けます。

シンプルではありますが、日数計算の記事はあまり見かけません。

オンラインで参考になる記事を探すことも大事ですが、

見かけない記事を書くことも醍醐味ではあります。

GitHubを活用して、自分だけのチャレンジを探してみるのもいいかもしれません。

dotnetでGitHubパッケージに登録するには

help.github.com

gist.github.com

dotnetGitHubパッケージに登録する際に時間がかかりました。

オンライン記事をみているとNugetに登録してしまう例もあるようです。

dotnetでプロジェクトを作成(省略)後、

csprojに引用サイト通り設定を追加、

プロジェクトcsproj直下にgistにあるnuget.configを設置します。

GitHub_USERNAMEには自分のアカウント名を私の場合takkiiを。

GitHub_TOKENには、GitHubで発行できるトークンを。

RubyGitHubパッケージに登録するときのトークンと同じです。

echo ":github: Bearer GH_TOKEN" >> ~/.gem/credentials

見覚えがあるはずです。なかったらぐぐりましょう。

※ いくつか説明を見つけることができます。

GH_TOKENがdotnetでも使うGitHub_TOKENになります。

dotnet pack --configuration Release

dotnet nuget push "bin/Release/プロジェクト名.1.0.0.nupkg" --source "github"

これで登録されます。使ってみませんか。

valgrindをMacOSCatalina(カタリナ)でビルドする。

MacOSCatalina 64bit

※ 当然、Xcode&commandlinetoolsのビルド対象も64bitです。

Xcode&commandlinetoolsはAppStoreまたはシステム環境設定→ソフトウェアのアップデートやAppleDeveloplerのサイトから、手に入れます。Xcodeなどを入れる環境構築の話題は省略します。

stackoverflow.com

github.com

※ビルドできませんでした。

× git://sourceware.org/git/valgrind.git

GitHubのこちらがビルドできました。

git clone https://github.com/sowson/valgrind

cd valgrind

./autogen.sh

valgrind/coregrind/Makefile内、153行目付近にあるam_append_19を置換

am__append_19 = \ 
        /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/mach_vm.defs \
        /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/task.defs \
        /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/thread_act.defs \
        /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/vm_map.defs

※ ビルド時の指定は64bitビルドのためです。

./configure --prefix=/where/you/want/it/installed --enable-only64bit

make

これでカタリナでビルドが通ります。

ビルド中、もしPerlでuseがno found commandなどになった場合、/usr/bin/perlを指定します。場合に応じて、cpanでlocal::libをインストールして、cpanがなければ入れます。ちょっと試すときvalgrind/coregrind内でmakeを実行することも考慮します。

QtCreatorでvalgrindとcallgrindを設定することができるようになります。

C++を覚えるとき、メモリリークを回避するためにガーベッジコレクション(GC)を導入したいと思うようになりました。MacGCが導入できるC++IDEを探しているとなじみの深いQtCreatorがおすすめの記事が海外でありました。communityeditonを使おうとしたときに、遭遇し解決したビルド例です。私のMBAのマシン性能はあまりに弱いため、valgrindが終了を返すのに時間がかかり本体に熱を持ち始め諦めましたが、我こそはという人がvalgrindを使い終了できるか試すのもよいのではないでしょうか。結果論ですが、homebrewは対応していなくてもPATHを通せばビルドできます。

今年もありがとうございました。来年もよろしくお願いします。

C++は機械に近い、人間力は道具を使うこと。

追記

vim8.1 · GitHub

下の方のEmacsビルドでMacのビルドツールを設定するコマンドも参照するといいかもしれない。

valgrind install path [ $HOME/valgrind (例) ]

export PATH=$HOME/valgrind/coregrind:$PATH
export PATH=$HOME/valgrind/callgrind:$PATH
export CPPFLAGS="$HOME/valgrind/include"

※ このように設定するのもよいかもしれない。

ガーベッジコレクションを導入するときのまとめ

前提、メモリリークすることがあると懸念されるとします。

それが発生したとき発動するかもしれないガーベッジコレクションを用意したいとします。

そんなときの記録。

ほとんどは参考サイト通りです。

github.com

※ ライセンス

github.com

https://www.hboehm.info/gc/license.txt

[ 2019/12/16 ]

bdwgcをcmakeでビルドする環境は、

8.0.4 は visual studio 2019対象

7.6.12はvisual stuido 2017対象

ビルドしてみてわかりました。

github.com

※ ライセンス

github.com

これもcmakeビルドする際に含まないといけないプロジェクトですが、最新でも通りました。

参考サイトの記事中にこんな記述があります

includeパスに、bdwgc/include のパスを通す。
libパスに、gcmt-dll.libの場所を追加する。
依存するライブラリに、gcmt-dll.libを追加する。
gcmt-dll.dllをコピーする。

visual studio 2017で設定してみました。

Debugとしてビルドしたbdwgcをプロジェクト内(例えばhello)に入れます。

hello/bdwgcと仮にします。

プロジェクト名で右クリック→プロパティ

C/C++全般→追加のインクルードディレクトリ→$(SolutionDir)\bdwgc\include

リンカー→全般→$(SolutionDir)\bdwgc\Debug

入力→追加の依存ファイル→(先頭に追加)gcmt-dll.lib;gcmt-lib.lib;kernel32.lib...と続きます。

bdwgc/Debug/gdmt-dll.dllを例 hello/hello/Debug(visualstudioビルド後に作成したフォルダ)にコピーします。

これで参考サイトC言語でGarvage Collectorを使う記事のソースがコンパイル&ビルドできます。

一例ですが、ガーベッジコレクションC/C++プロジェクトに導入してみませんか。

おそらくメモリリークは、回避できるはずです。

環境構築をすることでその先の知らない世界まで、道に迷わないように。

参考サイト

www.excellence-blog.com

corgi-lab.com

teratail.com

[ C++サンプル ]

#include <iostream>
#include <gc_cpp.h>

class stand final : public gc_cleanup
{
public:
    enum {
        n = 100,
        n123 = 123,
    };
};

int main()
{
    try {
        std::cout << stand::n << "\n";
        std::cout << stand::n123 << "\n";
    }
    catch (std::exception& e)
    {
        std::cout << e.what() << std::endl;
    }
}

出力結果

100
123

公開されました。

今年はこれでアドベントカレンダー記事は終わりです。

ありがとうございました。

Copyright © 2007-2020 Takayuki Kamiyama. All Rights Reserved.