はじめに
この記事はSiv3d Advent Calendar 201918日目の記事です。
今回やること
OpenSiv3D Linux版はCMakeを使ってビルドを行います。
Vimmerの私はプロジェクトの作成、ビルド、実行を全部Vimからできれば便利だと思い、プラグインを作成しました。
それがこちらになります。
https://github.com/higashi000/opensiv3d.vim
※プラグインの名前がnamespace的にやばいので新しい名前が決まり次第すぐに変更します。
補完の話
前もって書いておきますが、このプラグインでは補完はサポートしません。
というのも、vim-lspやcoc.nvim、LanguageClient-neovimといったプラグインを使ってlspを使えば簡単にOpenSiv3Dの補完ができるからです。
それぞれのプラグインのオプションにルートディレクトリの指定のオプションがあるので、そちらでプロジェクトをビルドした際に吐かせるcompile_commands.json
を読み込むようにするだけです。
sample(vim-lsp)
if executable('ccls')
au User lsp_setup call lsp#register_server({
\ 'name': 'ccls',
\ 'cmd': {server_info->['ccls']},
\ 'root_uri':{server_info->lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), 'compile_commands.json'))},
\ 'whitelist': ['c', 'cpp'],
\ })
endif
実装したい機能
- プロジェクトの作成
- CMakeLists.txtへビルド対象のソースファイルを追加
- ビルド(cmake, make)
- 実行
実装できた機能
実行以外の機能は実装しました。
使い方
OpenSiv3Dをビルド
まずはOpenSiv3Dをgit cloneしてきます。
その後、ビルドし、cloneしてきたリポジトリごと、.cache
に配置します。
下記コマンドのようにディレクトリを作成、ビルドしてください。
$ git clone https://github.com/siv3d/OpenSiv3d ~/.cache/OpenSiv3D
$ cd ~/.cache/OpenSiv3D
$ git checkout linux
$ mkdir Linux/Build
$ cd Linux/Build
$ cmake -DCMAKE_BUILD_TYPE=Release -GNinja ..
$ ninja
プロジェクトの作成
$ mkdir TestProject
$ cd TestProject
等でプロジェクトのディレクトリを作成、移動してください。
OpenSiv3DInit
というVimコマンドがあるのでプロジェクトディレクトリ直下で実行するとそのディレクトリにプロジェクト(CMakeLists.txt、resources、src)が作成されます。
ここでresourcesが存在しない等のエラーが出た場合は.cache
下に配置したOpenSiv3Dのディレクトリの名前等が間違っている可能性があります。
プロジェクトのビルド
プロジェクトがあるディレクトリでvimを開き、
-
OpenSiv3DBuild
を実行するとcmake
とmake
が実行されます。
ビルド対象ソースコードの追加
追加したいソースコードを開いた状態で
-
OpenSiv3DSourceAdd
を実行することで追加できます。
このプラグインの今後
名前を変えます。
この名前を保持し続けるのは他のプラグインのnamespaceとの衝突を招くため、なるべく早く(年内には)新しい名前を決めて変更します。
また、まだまだ未完成なのでこれからより完成度を高めていきたいです。