1. ホーム
  2. c++

[解決済み】CMakeエラー at CMakeLists.txt:30 (project)。CMAKE_C_COMPILER が見つかりませんでした。

2022-01-25 14:36:28

質問

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なしで直接)
  • あなたが持っているのは、最新の CMakeバージョン
  • {を使用します。 CMake にビルド環境を生成させたいドライブのアクセス権を持っていること {を使用します。
  • ビルドディレクトリがきれいであること(CMakeは最後に試行したものをキャッシュしているため)。

    Windowsのcmd.exe

    > rmdir /s /q VS2015
    > mkdir VS2015
    > cd VS2015
    

    バッシュシェル

    $ rm -rf MSYS
    $ mkdir MSYS
    $ cd MSYS
    

    で、コマンドシェルが新しく作成したバイナリ出力ディレクトリを指していることを確認します。

一般的にできること/やってみるべきこと

  1. CMakeは、任意の/あなたのデフォルトのコンパイラで検索して実行することができますか?ジェネレータを与えずに実行する

    プレ {コード

    使用するジェネレータを正しく判断できれば完璧です。 > cmake .. -- Building for: Visual Studio 14 2015 ...

  2. 実際に失敗したのは何だったのか?

    前回のビルドの出力ディレクトリにある Visual Studio 14 2015 で生成されたテスト・プロジェクトを開いてコンパイルしてみてください。 CMakeFiles\CMakeError.log| CMakeFiles\[Version]\CompilerIdC をコマンドラインから直接実行します(エラーログに記載されています)。

CMake は Visual Studio を見つけることができません。

  1. 正しい選択をしてみてください ジェネレータバージョン :

    CompilerIdCXX
  2. それでもダメな場合は、まず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)を見つけることができません。

  1. あなたは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環境変数を設定するには? ) で、もう一度試してみてください。

  2. それでもうまくいかない場合は、試しに gcc コンパイラのパスを直接エクスポートしてください(パスは異なる場合があります)。

    $ gcc
    gcc.exe: fatal error: no input files
    compilation terminated.
    

    詳細はこちらをご覧ください。 CMakeで新しいGCCのパスを指定する方法

    ノート : MinGW Makefiles "ジェネレーターを使用する場合、"MinGW Makefiles "ジェネレーターを使用するために gcc MinGWと一緒に配布されるプログラム

  3. まだ動かない?それは変ですね。コンパイラが存在し、実行可能な権利を持っていることを確認してください(上記の前提条件の章も参照してください)。

    そうでなければ、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に追加しようとします( {コード {コード , {コード {コード , {コード , {コード , {コード , {コード そして {コード ).