2017-04-24 10 views
1

私はgvimを使ってC++をコーディングしています。私のプログラムはcmakeを含んでいるので、私のソースはビルドとは別のディレクトリにあります。vim内から作成

ビルドディレクトリ内の正しいmakeファイルが見つかるように、vim内からmakeを呼び出すにはどうしたらいいですか?

その後、非常に同じコマンドラインスタイルと1回のキーストロークでアプリケーションを起動できますか? 、this page

:! (cd /path/to/your/cmake/build/directory; make && ./myProgram) 

:あなたは;または&&でコマンドを追加することができ、

:! (cd /path/to/your/cmake/build/directory; make) 

が同時にプログラムを実行するには:

答えて

0

私が思いついた最も簡単な解決策は以下のとおりです。 1つのキーストロークでこれを行うために、これをバインドする方法をチュートリアルで見つけることができます。

説明:vimので

、あなたは:! command(例えば、:! ls)で任意のコマンドを実行することができます。 (cd [...]; [...])では、サブシェルを作成し、サブシェルでこのディレクトリに変更することで、実行ディレクトリが異なるように指定します。

+0

よろしくお願いいたします。私はこれをバインドして、より簡単に生活をより簡単にします。 –

+0

'cmake --build '(この場合は 'cd'コマンド 'cmake --build .')の後に生成されたツールファイル(私たちがファイルを生成するように選択した場合、これを使って 'ninja'を呼び出すことができます)。 また、プロジェクトのルートディレクトリに '.vimrc.local'を使用し、そこに' makeprg'や他のプロジェクト固有のコマンドを設定することができます。あなたのメイン '.vimrc'にこれを追加する必要があります ' filereadable($ HOME。 "/.vimrc.local") source〜/ .vimrc.local endif' – compor

2

TD; LR:'cd "compi/dir" && make $*'&makeprg:let)に割り当て、:make youroptionaltarget -j 4を実行します。

Q/Aでも、私はすでに:!makeというアプローチを批判しています。これは、20年前にviでやったことです。 Vimはquickfixモードによる統合コンパイルを導入しました。コードをコンパイルするためのvimの方法を学んでください。

CMakeのケースでは、実際にcmake --someoption compil/dirとコンパイルできます。 vimからCMakeがパイロットしたVC++コンパイラでコンパイルするときに使用します。残りの時間は、コンパイルの出力を0,238,という各行の先頭に置いてvim quickfixの機能を壊してしまうので、むしろ避けたいと思います。残念ながら、&errorformatを微調整することでこのノイズを無視する方法はありません。これまでのところ、私はcmakectestの出力を後で^\d+>を削除するために後処理します。

So.私たちは本当に何ができますか?私たちはvim quickfix機能を利用するべきです。これは、&makeprg&efmのオプションを調整することで行います。あなたの場合、最初のもので十分でしょう。これを使用してディレクトリを変更し、makeを実行します。そして最後に、あなたはまた、バックグラウンドでコンパイルしたい場合は、あなたがいないディレクトリに、バックグラウンドでコンパイルする方法を知っているプラ​​グインが必要になります:makeでコンパイルし:cn:cp:ccなど

でエラーをナビゲート現在のもの。ここで私はbuild-tool-wrappers pluginを紹介し、これらの機能といくつかのCMake関連機能を提供しています。

PS:make(および忍者)-cパラメータを使用することもできます。

関連する問題