背景
C/C++ プロジェクトで Makefile
があれば make を呼び, ninja.build
があれば ninja を呼びたい...
方法
vim-makeshift がありました!
これで, :lmake
or :MakeshiftBuild
すれば ninja.build
があれば ninja を呼んでビルドし, Makefile
が あれば make を呼んでくれます!
筆者は ctrl-m
にビルドのショートカットを割り当てているので, 以下のようになりました.
map <C-m> :<C-U>MakeshiftBuild<CR
<C-U>
の意味はコチラ https://e-v-e.hatenablog.com/entry/20150101/1420067539
(ビルドのショートカットの場合は基本なくても大体大丈かなとは思います)
再度コンパイル時がうまく行かないとき
ソースとビルドディレクトリが分かれているとき, 一旦 makeshift でビルドし, エラーがあり quickfix でソースコードファイル開いた後だと次は実行に失敗したりします...
どうもそのときはソースコードを開いたディレクトリで make 関連のファイルを探索しようとしているようです.
let g:makeshift_use_pwd_first = 1
で解決できました. ビルドディレクトリ(vim を起動したディレクトリ)を優先して探索してくれます!
その他
なんかちょっと make 起動までラグがあるっぽい?