[解決済み】CMakeエラー at CMakeLists.txt:30 (project)。CMAKE_C_COMPILER が見つかりませんでした。
質問
asepriteの最新版をコンパイルするためにCMakeでVisual Studioソリューションを作ろうとしているのですが、CMakeはずっと次のようなメッセージを出し続けています。
No CMAKE_C_COMPILER could be found.
No CMAKE_CXX_COMPILER could be found.
GCCはすでにダウンロード済みで ビジュアルスタジオ2015 .
私はこのチュートリアルに沿っています。
https://github.com/aseprite/aseprite/blob/master/INSTALL.md
解決方法は?
これらのエラーメッセージ
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 がビルド環境を検出する際に最初に試みることの一つ)。
問題を発見する手順は、生成したいビルド環境に依存します。以下のチュートリアルは、ここ Stack Overflow での回答と、Microsoft Windows 7/8/10 と Ubuntu 14.04 での CMake の私自身の経験の一部をまとめたものです。
前提条件
- コンパイラ/IDEをインストールし、他のプログラムを一旦コンパイルできた場合(CMakeなしで直接)
- 例えば、IDE はあるが、コンパイラやサポートフレームワークそのものがインストールされていない可能性があります。 VS 2017のCMakeによるソリューション生成の問題点 または WindowsでCMakeにClangを使用するように指示するには?
- あなたが持っているのは、最新の CMakeバージョン {を使用します。 CMake にビルド環境を生成させたいドライブのアクセス権を持っていること {を使用します。
ビルドディレクトリがきれいであること(CMakeは最後に試行したものをキャッシュしているため)。
Windowsのcmd.exe
> rmdir /s /q VS2015 > mkdir VS2015 > cd VS2015
バッシュシェル
$ 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
をコマンドラインから直接実行します(エラーログに記載されています)。
CMake は Visual Studio を見つけることができません。
正しい選択をしてみてください ジェネレータバージョン :
CompilerIdCXX
それでもダメな場合は、まずVisual Studioの環境変数を設定してみてください(パスは変わる可能性があります)。
> cmake --help > cmake -G "Visual Studio 14 2015" ..
を使用するか
> "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" > cmake ..
/ {コード {コード / {コード (ありがとうございました アントワーン をヒントにしてください)。
. 背景 {を選択。 : CMake は、すべての Visual Studio リリースとフレーバー (Express, Community, Professional, Premium, Test, Team, Enterprise, Ultimate, etc.) をサポートしています。コンパイラの場所を決定するために、レジストリの検索を組み合わせて使用します(例えば、次の場所)。 {コード ) 、システム環境変数、そして、もし他のどれにも当てはまらない場合は、単純にコンパイラーを呼び出してみてください。
CMakeはGCC(MinGW/MSys)を見つけることができません。
あなたはMSysを開始します。
Developer Command Prompt for VS2015
というシェルがあります。All Programs
を直接呼び出してみてください。Visual Studio 2015
Visual Studio Tools
ここで、それは見つかりました
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\[Version];InstallDir
というメッセージが表示され、パラメータを与えていないことに文句を言っています。ということで、以下のようにするとうまくいくはずです。
bash
GCCが見つからなかった場合
msys.bat
をクリックして、コンパイラのパスを追加してください ( CMakeスクリプトでPATH環境変数を設定するには? ) で、もう一度試してみてください。それでもうまくいかない場合は、試しに
gcc
コンパイラのパスを直接エクスポートしてください(パスは異なる場合があります)。$ gcc gcc.exe: fatal error: no input files compilation terminated.
詳細はこちらをご覧ください。 CMakeで新しいGCCのパスを指定する方法
ノート : MinGW Makefiles "ジェネレーターを使用する場合、"MinGW Makefiles "ジェネレーターを使用するために
gcc
MinGWと一緒に配布されるプログラムまだ動かない?それは変ですね。コンパイラが存在し、実行可能な権利を持っていることを確認してください(上記の前提条件の章も参照してください)。
そうでなければ、CMake の最後の手段は、コンパイラの検索自体を試さず、CMake の内部変数を直接
プレ$ cmake -G "MSYS Makefiles" .. -- The CXX compiler identification is GNU 4.8.1 ... $ make
詳細はこちらをご覧ください。 Cmake は -D CMAKE_CXX_COMPILER=g++ を尊重しません。 と Cmakeエラー設定コンパイラ
また、これらの変数は、以下の方法で設定することもできます。
export PATH=...
をWindows上で実行します。参照 Cmake がコンパイラを見つけられません
{について 背景 {を選択。 : Visual Studioとほぼ同じです。CMakeはあらゆる種類のGCCフレーバーをサポートしています。環境変数(CC、CXXなど)を検索したり、単純にコンパイラを呼び出そうとします。さらに、あらゆる接頭辞を検出します。 クロスコンパイル )、GNUコンパイラツールチェーンのすべてのbinutilsに追加しようとします( {コード {コード , {コード {コード , {コード , {コード , {コード , {コード そして {コード ).
関連
-
[解決済み】 != と =! の違いと例(C++の場合)
-
[解決済み] string does not name a type Errorが発生するのはなぜですか?
-
[解決済み】変数 '' を抽象型 '' と宣言できない。
-
[解決済み] クラスにデフォルトコンストラクタが存在しない。
-
[解決済み】「corrupted size vs. prev_size」glibc エラーを理解する。
-
[解決済み】C++の変数はイニシャライザーを持っているが、不完全な型?
-
[解決済み】「std::operator」で「operator<<」にマッチするものがない。
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み】C++ - 適切なデフォルトコンストラクタがない [重複]。
-
[解決済み] エラーメッセージ "制約契約名に一致するエクスポートが見つかりませんでした。"
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】LLVMで暗黙のうちに削除されたコピーコンストラクタの呼び出し
-
[解決済み】C++エラー:の初期化に一致するコンストラクタがありません。
-
[解決済み】cc1plus:エラー:g++で認識されないコマンドラインオプション"-std=c++11"
-
[解決済み】エラー。switchステートメントでcaseラベルにジャンプする
-
[解決済み】エラー:不完全な型へのメンバーアクセス:前方宣言の
-
[解決済み】クラスのコンストラクタへの未定義参照、.cppファイルの修正も含む
-
[解決済み] 警告:暗黙の定数変換でのオーバーフロー
-
[解決済み] CMakeでコンパイラを指定するには?
-
[解決済み】Visual Studio Community Edition 2015(2017ではない)をダウンロードする方法)
-
[解決済み] CMakeに新しいGCCのパスを指定する方法