これらのエラー メッセージ
CMake Error at ... (project):
No CMAKE_C_COMPILER could be found.
-- Configuring incomplete, errors occurred!
See also ".../CMakeFiles/CMakeOutput.log".
See also ".../CMakeFiles/CMakeError.log".
または
CMake Error: your CXX compiler: "CMAKE_CXX_COMPILER-NOTFOUND" was not found.
Please set CMAKE_CXX_COMPILER to a valid compiler path or name.
...
-- Configuring incomplete, errors occurred!
CMake が単純なテスト プログラムをコンパイルするための C/CXX コンパイラを見つけることができなかったことを意味します (CMake がビルド環境を検出するときに最初に試行することの 1 つです)。
問題を見つける手順は、生成するビルド環境によって異なります。次のチュートリアルは、Stack Overflow に関する回答と、Microsoft Windows 7/8/10 および Ubuntu 14.04 での CMake に関する私自身の経験の一部です。
前提条件
- コンパイラ/IDE をインストールし、(CMake を使用せずに直接) 他のプログラムをコンパイルできた
- あなた。 IDE を持っている可能性がありますが、CMake を使用した VS 2017 のソリューションを生成する問題で説明されているように、コンパイラまたはサポート フレームワーク自体をインストールしていない可能性があります または Windows で Clang を使用するように CMake に指示するにはどうすればよいですか?
- 最新の CMake バージョンを持っている
- CMake でビルド環境を生成するドライブへのアクセス権がある <リ>
クリーンなビルド ディレクトリがあります (CMake は最後の試行からのものをキャッシュするため)。ソースツリーのサブディレクトリとして
Windows cmd.exe
> rmdir /s /q VS2015
> mkdir VS2015
> cd VS2015
Bash シェル
$ rm -rf MSYS
$ mkdir MSYS
$ cd MSYS
コマンド シェルが、新しく作成したバイナリ出力ディレクトリを指していることを確認してください。
試すことができる/すべき一般的なこと
<オール> <リ>CMake は、デフォルトのコンパイラを見つけて実行できますか?ジェネレーターを与えずに実行
> cmake ..
-- Building for: Visual Studio 14 2015
...
使用するジェネレーターを正しく決定した場合は完璧です-ここのように Visual Studio 14 2015
実際に失敗したのは何ですか?
前のビルド出力ディレクトリで、CMakeFiles\CMakeError.log
を見てください。 意味のあるエラー メッセージについては、CMakeFiles\[Version]\CompilerIdC
で生成されたテスト プロジェクトを開いてコンパイルしてみてください。 |CompilerIdCXX
コマンド ラインから直接 (エラー ログに表示されます)。
CMake が Visual Studio を見つけられない
<オール> <リ>正しいジェネレーターのバージョンを選択してみてください:
> cmake --help
> cmake -G "Visual Studio 14 2015" ..
<リ> それでも問題が解決しない場合は、最初に Visual Studio 環境変数を設定してみてください (パスは異なる場合があります):
> "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"
> cmake ..
または Developer Command Prompt for VS2015
を使用します All Programs
の下の Windows スタート メニューのショートカット /Visual Studio 2015
/Visual Studio Tools
(ヒントをくれた @Antwane に感謝します)。
背景 :CMake は、Visual Studio のすべてのリリースとフレーバー (Express、Community、Professional、Premium、Test、Team、Enterprise、Ultimate など) をサポートしています。コンパイラの場所を特定するために、レジストリの検索を組み合わせて使用します (例:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\[Version];InstallDir
)、システム環境変数、および - 他のどれも何かを思い付かなかった場合 - 単純にコンパイラーを呼び出してみてください。
CMake が GCC (MinGW/MSys) を見つけられない
<オール> <リ>
MSys bash
を起動します msys.bat
のシェル gcc
を直接呼び出してみてください
$ gcc
gcc.exe: fatal error: no input files
compilation terminated.
ここで gcc
が見つかりました 動作するパラメータを何も与えていないと不平を言っています.
したがって、次のように動作するはずです:
$ cmake -G "MSYS Makefiles" ..
-- The CXX compiler identification is GNU 4.8.1
...
$ make
GCC が見つからない場合は、export PATH=...
を呼び出します コンパイラ パスを追加するには (CMake スクリプトで PATH 環境変数を設定する方法を参照してください)。 )、もう一度やり直してください。
それでも機能しない場合は、CXX
を設定してみてください コンパイラ パスを直接エクスポートする (パスは異なる場合があります)
$ export CC=/c/MinGW/bin/gcc.exe
$ export CXX=/c/MinGW/bin/g++.exe
$ cmake -G "MinGW Makefiles" ..
-- The CXX compiler identification is GNU 4.8.1
...
$ mingw32-make
詳細については、CMake の新しい GCC パスを指定する方法を参照してください
注意 :"MinGW Makefiles" ジェネレーターを使用する場合は、mingw32-make
を使用する必要があります MinGWで配布されるプログラム
まだ動作していません?それは変だ。コンパイラがそこにあり、実行権限があることを確認してください (上記の前提条件の章も参照してください)。
それ以外の場合、CMake の最後の手段は、コンパイラ検索自体を試行せず、CMake の内部変数を直接設定することです
$ cmake -DCMAKE_C_COMPILER=/c/MinGW/bin/gcc.exe -DCMAKE_CXX_COMPILER=/c/MinGW/bin/g++.exe ..
詳細については、Cmake は -D CMAKE_CXX_COMPILER=g++ を尊重しないを参照してください。 および Cmake エラー設定コンパイラ
または、これらの変数を cmake-gui.exe
経由で設定することもできます Windows で。 Cmake がコンパイラを見つけられないを参照してください
背景 :Visual Studio とほぼ同じです。 CMake はあらゆる種類の GCC フレーバーをサポートしています。環境変数 (CC、CXX など) を検索するか、単にコンパイラを呼び出そうとします。さらに、プレフィックスを検出し (クロスコンパイル時)、GNU コンパイラ ツールチェーンのすべての binutils に追加しようとします (ar
、 ranlib
、 strip
、 ld
、 nm
、 objdump
、および objcopy
).
Ubuntu の場合、以下のものをインストールしてください:
sudo apt-get update && sudo apt-get install build-essential
これは、Visual Studio 15 2017 をインストールした後に起こりました。
Visual Studio 14 2015 の C++ コンパイラは問題ではありませんでした。 Windows 10 SDK に問題があるようです。
Windows 10 SDK を Visual Studio 14 2015 に追加すると、問題が解決しました。
添付のスクリーンショットを参照してください。