2

vim プラグインの clang_complete に必要な .clang_complete ファイルを生成できるように、CMakeLists.txt ファイルをセットアップしたいと考えています。

通常、これを行うには、コンパイラと共に提供される python スクリプトにパラメーターと、コンパイル用のすべてのパラメーターを渡します。スペースを節約するために、cc_args.py が入っている実際のディレクトリを省略していることに注意してください。

cc_args.py gcc test.c -o test -I~/IncludeDirs/

これは、メイク段階でも行うことができます...

make CC='cc_args.py gcc' CXX='cc_args.py g++'

ただし、CMakeLists.txt ファイル内でこれを設定する方法 (可能であれば) がわかりません。clang_complete をセットアップするたびにこれを入力しなければならないのは本当に面倒です。このようにしたい理由は、カスタム スクリプトを使用して CMakeLists.txt ファイルを作成するプロジェクトが複数あるためです。そのため、それぞれのスクリプトを作成するか、一般的なスクリプトを手動で配置する必要があります。避けたい。

これまでにエラーが発生したことをいくつか試しました。

CMAKE_CC_COMPILER と CMAKE_CXX_COMPILER を最初の「cc_args.py g++」に似た行に設定しようとしました。ここで発生するエラーは、コンパイラが見つからないことを示しています (これは理解できます)。

次に試したのは、コンパイラ変数を cc_args.py だけに設定し、実際のコンパイラのフラグを追加することでした。言うまでもなく、それはひどく失敗しました。CMake は、テスト プログラムをコンパイルできないと言っていました (スクリプトがコンパイラではなく、テストが私が設定したフラグを使用しないことを考えると、これには驚きません)。

移動を必要とする他の外部スクリプトを作成せずに、これを実行できる方法を考えられる人はいますか?

4

2 に答える 2

2

解決策は、cmake を実行する前に CXX 環境変数を設定することです。そんな感じ:

CXX="$HOME/.vim/bin/cc_args.py clang++" cmake ..
make

詳細については、 http://www.guyrutenberg.com/2013/01/29/vim-creating-clang_complete-using-cmake/を参照してください。

于 2014-01-06T14:18:09.803 に答える
1

「他の外部スクリプトを作成せずに」と言ったことは知っていますが、ワンライナーが必要なようです。

exec cc_args.py g++

そして、そのファイルを CMAKE_CXX_COMPILER として設定します。file()配布する必要がない場合は、ビルド時にCMake の関数を使用してワンライナーを作成することもできます。

于 2013-02-21T13:32:37.203 に答える