Help us understand the problem. What is going on with this article?

OpenSiv3D Linux版をVimで

はじめに

この記事は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
を実行するとcmakemakeが実行されます。

ビルド対象ソースコードの追加

追加したいソースコードを開いた状態で
- OpenSiv3DSourceAdd
を実行することで追加できます。

このプラグインの今後

名前を変えます。
この名前を保持し続けるのは他のプラグインのnamespaceとの衝突を招くため、なるべく早く(年内には)新しい名前を決めて変更します。

また、まだまだ未完成なのでこれからより完成度を高めていきたいです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away