2016-07-29 26 views
0

では見られない私はcmakeのを使用してgithubのから得たいくつかのコードを構築しようとしているが、以下のエラーを取得しておくよ:が忍者CMakeの

CMake Error: CMake was unable to find a build program corresponding to "Ninja". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool. 
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly. 
Missing variable is: 
CMAKE_C_COMPILER_ENV_VAR 
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly. 
Missing variable is: 
CMAKE_C_COMPILER 
CMake Error: Could not find cmake module file:/golang/project/src/github.com/devsisters/goquic/libquic/build/debug/CMakeFiles/2.8.11/CMakeCCompiler.cmake 
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly. 
Missing variable is: 
CMAKE_CXX_COMPILER_ENV_VAR 
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly. 
Missing variable is: 
CMAKE_CXX_COMPILER 
CMake Error: Could not find cmake module file:/golang/project/src/github.com/devsisters/goquic/libquic/build/debug/CMakeFiles/2.8.11/CMakeCXXCompiler.cmake 
-- Configuring incomplete, errors occurred! 

誰がどのように正確にこれらの変数を設定する方法を教えてもらえますか?ありがとう。

これを構築するためにgithubコードに付属の./build_libs.shファイルを使用しました。

+0

だから、どのような**システムを構築する**あなたはCMakeで使いたいですか?忍者?またはMakefiles? – Tsyvarev

+0

私はファイルを作るために忍者をダウンロードしました。 – user3871995

+0

使用するビルドシステムを設定するにはどうすればよいですか?私もmakefileを持っていて、どちらかを使うことができます – user3871995

答えて

6

実行中のスクリプトは、cmake忍者ジェネレータを使用しています。それが働くためには、あなたは道に忍者が必要です。ほとんどのLinuxディストリビューションでは、パッケージからインストールすることができます。

Ubuntuの:あなたは、あなたがそれをダウンロードし、それがPATH環境変数に場所です追加する必要があり、あなたのディストリビューションのためにそれを見つけることができない場合は忍者

openSUSEのを忍者-構築します。

+1

あなたの答えをありがとう。私は忍者をダウンロードしてビルドしました。さらに、$ PATH変数に追加しましたが、まだこのエラーが表示されています。私はそれが何か違いがあれば、redhatを使用しています – user3871995

+2

本当にあなたがPATHにいるなら、it.Run 'echo $ PATH'を実行して、そこにフォルダninjaがあることを確認してください。 –

+0

CMakeキャッシュをクリアする必要があるかもしれません。ビルドディレクトリのCMakeCache.txtを削除するだけです。 – usr1234567

2

ninjaが本当に$ PATHに存在し、それでも動作しない場合は、ls -l /PATH/TO/NINJAを介して実行可能ファイルのアクセス許可を確認する必要があります。他の人が&実行許可( '-rwxr-xr-x'のような)を読み込んでいることを確認してください。

コメントの代わりに新しい回答を投稿して申し訳ありません(私はここにいると評判が足りません)。

参照:https://public.kitware.com/Bug/view.php?id=13910

+0

それは私のために働かない。結局、私はcentosの代わりにubuntuに切り替えるとすべてうまく動作します... –

1

私の解決策:シンボリックリンク "忍者ビルド" "忍者" へ。

# ln -s /usr/bin/ninja /usr/bin/ninja-build 

これは、私が以下で説明する非常に古いバージョンのCMakeでのみ動作します。

私は既に新しい "忍者"バイナリを/ usr/binにドロップして、それに0755の権限があることを確認しました。ジェネレータコマンドでstraceを実行するまで、私は困惑しました。

# strace cmake -GNinja .. | grep -i ninja 
access("ninja-build", R_OK)    = -1 ENOENT (No such file or directory) 
access("/usr/local/sbin/ninja-build", R_OK) = -1 ENOENT (No such file or directory) 
access("/usr/local/bin/ninja-build", R_OK) = -1 ENOENT (No such file or directory) 
access("/sbin/ninja-build", R_OK)  = -1 ENOENT (No such file or directory) 
access("/bin/ninja-build", R_OK)  = -1 ENOENT (No such file or directory) 
access("/usr/sbin/ninja-build", R_OK) = -1 ENOENT (No such file or directory) 
access("/usr/bin/ninja-build", R_OK) = -1 ENOENT (No such file or directory) 
access("/opt/texlive/2016/bin/i386-linux/ninja-build", R_OK) = -1 ENOENT (No such file or directory) 
access("/root/bin/ninja-build", R_OK) = -1 ENOENT (No such file or directory) 

「ninja」ではなく「ninja-build」を探していました。

私は、仕事でも家庭でも、WindowsとLinuxで、CMake with Ninjaを広く使用しています。だからなぜ私はこのバグを見たことがないのですか?

このインスタンスでは、私は非常に古いバージョンのCMake、バージョン2.8.12を使用しています。それはとても古くから、ほとんど化石化しています。おそらくそれは後で修正されたCMakeバグか、ある時点でNinjaプロジェクトがバイナリの名前を変更したかのいずれかです。

関連する問題