CMakeLists.txt:30(プロジェクト)でのCMakeエラー:CMAKE_C_COMPILERが見つかりませんでした


104

私は、CMakeを使用してVisual Studioソリューションを作成し、最新バージョンのasepriteをコンパイルしようとしています。

No CMAKE_C_COMPILER could be found.
No CMAKE_CXX_COMPILER could be found.

すでにGCCをダウンロードしており、Visual Studio 2015を使用しています。

私はこのチュートリアルに従っています:

https://github.com/aseprite/aseprite/blob/master/INSTALL.md


コンパイラーを備えたVisual Studioまたはgccを備えたMakefileのいずれかでプロジェクトを構成できます。どの方法を試しましたか?
Tsyvarev

入力しているcmakeコマンドは何ですか?
bames53 2015

最新のCMakeを使用していますか?どのジェネレーターを使用しましたか?Visual Studio 2015コマンドプロンプトからコマンドを実行しましたか(コンパイラー環境変数が設定されているため)?
drescherjm 2015

1
@ bames53 @Caio Fontesが対応するコマンドラインに追加したかったのは:cmake .. -G "Visual Studio 14 2015"またはcmake .. -G "MSYS Makefiles"gcc意味する場合MinGW)。そして、私はそれらの質問をたくさん見ました(ここここ、またはここのような)と私はSOの組み合わせ/チュートリアルの答えが欠けていると思っています。
Florian

回答:


97

これらのエラーメッセージ

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つ)。

問題を見つける手順は、生成するビルド環境によって異なります。次のチュートリアルは、ここでのスタックオーバーフローに関する回答と、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
    ...
    

    使用するジェネレータが正しく決定されていれば完璧です-このように Visual Studio 14 2015

  2. 実際に失敗したのは何ですか?

    前のビルド出力ディレクトリでCMakeFiles\CMakeError.log、意味のあるエラーメッセージを探すか、またはで生成されたテストプロジェクトを開いてコンパイルしてみてくださいCMakeFiles\[Version]\CompilerIdCCompilerIdCXXコマンドラインから直接(エラーログで見つかります)。

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

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

    > cmake --help
    > cmake -G "Visual Studio 14 2015" ..
    
  2. それでも問題が解決しない場合は、最初にVisual Studio環境変数を設定してみてください(パスは異なる場合があります)。

    > "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"
    > cmake ..
    

    またはDeveloper Command Prompt for VS2015、WindowsのスタートメニューのAll Programs/ Visual Studio 2015/の下にあるショートカットを使用しますVisual Studio Tools(ヒントは@Antwaneに感謝します)。

背景:CMakeは、Visual Studioのすべてのリリースとフレーバー(Express、Community、Professional、Premium、Test、Team、Enterprise、Ultimateなど)をサポートしています。コンパイラの場所を特定するために、レジストリの検索(例:at HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\[Version];InstallDir)、システム環境変数の組み合わせを使用し、他のどれも何かを考え出さない場合は、明らかにコンパイラを呼び出します。

CMakeはGCC(MinGW / MSys)を見つけることができません

  1. 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環境変数を設定する方法を参照)して、再試行してください。

  2. それでも機能しない場合は、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とともに配布されるプログラムを使用する必要があります。

  3. まだ動作していません?それは変だ。コンパイラが存在し、実行権限があることを確認してください(上記の前提条件の章も参照)。

    そうでない場合、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.exeWindows で設定することもできます。Cmakeがコンパイラを見つけられないを参照してください

背景:Visual Studioとほとんど同じです。CMakeはあらゆる種類のGCCフレーバーをサポートしています。環境変数(CC、CXXなど)を検索するか、コンパイラの呼び出しを試みます。加えて、(場合、任意のプレフィックスを検出するクロスコンパイル)とGNUコンパイラツールチェーン(全てのbinutilsに追加しようとするとarranlibstripldnmobjdump、およびobjcopy)。


1
ヘッドアップと同じように、cmake docsリンクの一部は本当に古いバージョンのCMakeを指しています。バージョンセレクターを使用して、コンピューターにあるバージョンと一致するようにしてください(たとえば、新しいプラットフォームが表示されない場合)あなたが必要です)。
-jrh

39

Ubuntuの場合は、以下のものをインストールしてください。

sudo apt-get update && sudo apt-get install build-essential

21

これは、Visual Studio 15 2017をインストールした後に起こりました。

Visual Studio 14 2015のC ++コンパイラは問題ではありませんでした。Windows 10 SDKに問題があるようです。

Visual Studio 14 2015にWindows 10 SDKを追加すると、問題が解決しました。

添付のスクリーンショットを参照してください。

ここに画像の説明を入力してください


13

CMakeを使用しているときにもこのエラーが発生しました。

No CMAKE_C_COMPILER could be found.
No CMAKE_CXX_COMPILER could be found.

MSDNライブラリの記事「Visual Studio 2015のVisual C ++」にある「警告」ボックスは、私に必要な助けを与えてくれました。

Visual Studio 2015には、C ++がデフォルトでインストールされていません。したがって、新しいC ++プロジェクトを作成すると、必要なC ++コンポーネントをダウンロードするように求められます。



5

libgit2-0.23.4のビルド中にこの問題に遭遇しました。私にとっての問題は、C ++コンパイラと関連パッケージがVS2015でインストールされなかったため、「C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC \ vcvarsall.bat」ファイルが見つからず、Cmakeが見つけられなかったことでした。コンパイラ。

Visual Studio 2015 GUI(C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ devenv.exe)でC ++プロジェクトを手動で作成しようとしましたが、プロジェクトの作成中にC ++をダウンロードするように求められました&関連パッケージ。

必要なパッケージをダウンロードした後、vcvarsall.batを確認できました。Cmakeはコンパイラを見つけ、次のログで正常に実行できました。

C:\Users\aksmahaj\Documents\MyLab\fritzing\libgit2\build64>cmake ..
-- Building for: Visual Studio 14 2015
-- The C compiler identification is MSVC 19.0.24210.0
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual        
Studio 14.0/VC/bin/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual  
Studio 14.0/VC/bin/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Could NOT find PkgConfig (missing:  PKG_CONFIG_EXECUTABLE)
-- Could NOT find ZLIB (missing:  ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
-- zlib was not found; using bundled 3rd-party sources.
-- LIBSSH2 not found. Set CMAKE_PREFIX_PATH if it is installed outside of 
the default search path.
-- Looking for futimens
-- Looking for futimens - not found
-- Looking for qsort_r
-- Looking for qsort_r - not found
-- Looking for qsort_s
-- Looking for qsort_s - found
-- Looking for clock_gettime in rt
-- Looking for clock_gettime in rt - not found
-- Found PythonInterp: C:/csvn/Python25/python.exe (found version "2.7.1")
-- Configuring done
-- Generating done
-- Build files have been written to:    
C:/Users/aksmahaj/Documents/MyLab/fritzing/libgit2/build64

1
これでうまくいきました。必要なパッケージをインストールするC ++プロジェクトを手動で作成するのがコツです。
Melaz 16

5

CMakeでも同じエラーが発生しました。私の場合、最初のCMakeダイアログで間違ったVisual Studioバージョンを使用しており、Visual Studioコンパイラを選択する必要があります。

その後、「Visual Studio 11 2012」に変更しました。(PCにVisual Studio Ultimate 2012バージョンがあります)。一般的に、初期のCMake構成ダイアログでVisual Studioバージョンの古いバージョンを入力してみます。


4

私にとって、この問題は、プロジェクトをより浅い親ディレクトリ、つまり次の場所に移動したときに、Windowsではなくなりました。

C:\Users\spenc\Desktop\MyProjectDirectory

の代わりに

C:\Users\spenc\Desktop\...\MyProjectDirectory

問題の原因は、MSBuildのファイルパスの長さが260文字に制限されていたことにあると思います。これにより、CMakeが実行する基本的なコンパイラーテストが呼び出さCompilerIdCXX.vcxprojれ、次のエラーで失敗するプロジェクトがビルドされます。

C1083: Cannot open source file: 'CMakeCXXCompilerId.cpp'

ファイルのパスの長さなどのため

C:\Users\spenc\Desktop\...\MyProjectDirectory\build\CMakeFiles\...\CMakeCXXCompilerId.cpp

MAX_PATH制限を超えています。

CMakeは、CXXコンパイラはないと結論付けます。


2

Visual Studioの正しいバージョンを選択していることを確認してください。Visual Studio 2015は実際にはVisual Studio 14であり、同様にVisual Studio 2012はVisual Studio 11であるため、これは見た目よりもトリッキーです。2015をインストールしたときに、実際にはVisual Studio 2017であるVisual Studio 15を誤って選択しました。



1

また、自分がsudoユーザーであり、作業中のディレクトリに対する読み取り/書き込みアクセス権があることを確認することもできます。OS Xでも同様の問題があり、sudoモードに入るだけで解決しました。


1

将来的に私のような人を助けるために:

私はこの問題を24時間、3つの異なる64ビットマシン(Win7、Windows 8.1 VMおよびWIn 8.1ラップトップ)で24時間抱えていました-VS 2017でWebKitをビルドしようとしました。

ここでの単純な問題は、VC ++コンパイラー(つまり、cl.exeとそれに依存するDLL)がCMakeから見えないことです。シンプル。これらのバイナリを含むVC ++フォルダーをCMakeおよび作業中のコマンドプロンプト(コマンドプロンプトからCmakeを実行している場合)から見えるようにすることで、出来上がりです!(上記の他の人が提起した要点に加えて)

とにかく、すべての種類の修正後-これらの多くのフォーラムに投稿されたように-PATH変数の内容が複数のVisual Studio BINパスなどで乱雑になっていないことを確認するだけの問題であることがわかりました。代わりに、ポイント:

a)コンパイラの場所(つまり、使用するVisual Studioのバージョンのcl.exe)。私の場合(64ビットプラットフォームを対象とし、64ビットホストで開発している):C:\ Program Files(x86 )\ Microsoft Visual Studio \ 2017 \ Community \ VC \ Tools \ MSVC \ 14.15.26726 \ bin \ Hostx64 \ x64

b)さらに、(cl.exeが依存する)依存DLLを含むフォルダー: api-ms-win-crt-runtime-l1-1-0.dll-私のマシンでは、

C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Community \ Common7 \ IDE \ Remote Debugger \ x64

これらの2つのディレクトリは、簡略化されたCUSTOMシステムパス変数(管理者特権コマンドプロンプトで動作)に追加され、「CMAKE_C_COMPILERが見つかりませんでした」と「CMAKE_CXX_COMPILERが見つかりませんでした」というメッセージがなくなりました。エラー。

それが誰かを助けることを願っています。


1

CMakeのXcodeジェネレーターを使用しているときに、ccacheが有効になっていると、正確にエラーが報告されます。ccacheを無効にすると問題が解決しました。以下に、MacOSで機能する修正/チェックを示しますが、他のプラットフォームでも同様に機能するはずです。

どうやら、ここで説明するように、CMakeのXcodeジェネレーター(およびその他)をccacheと組み合わせて使用​​することもできます。しかし、私はそれを自分で試したことはありません。

# 1) To check if ccache is enabled:
echo $CC
echo $CXX
# This prints something like the following: 
#     ccache clang -Qunused-arguments -fcolor-diagnostics. 
# CC or CXX are typically set in the `.bashrc` or `.zshrc` file.

# 2) To disable ccache, use the following:
CC=clang
CXX=clang++

# 3) Then regenerate the cmake project
cmake -G Xcode <path/to/CMakeLists.txt>

1
「xcode-select -p」の出力が私のXcodeインストールを指すようにすることで、同じ問題を解決できました。私の場合、Xcodeをインストールして「xcode-select -r」を実行するだけで十分でした。
TomTasche

0

Visual Studio 2015 update 2をVisual Studio 2015 update 3に更新しましたが、問題は解決しました。


このソリューションは、私の職場でWindows OSアップデートをプッシュした後に必要でした。このページの解決策のうち少なくとも2つを使用してエラーを修正しました。エラーは任意の数の条件で発生する可能性があるため、いくつかの異なるが実行可能な解決策があるのはこのためです。
ナタリーコトリル

0

No CMAKE_CXX_COMPILER could be found.コマンドラインからCMakeを実行すると問題なく動作しましたが、cmake-gui()で同じ問題が発生しました。手動でエントリを追加した後

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin

それは私のために働いたPATH環境変数に。


0

私にとっては、Visual Studioに付属する開発者コマンドプロンプトを使用してcdからyour/jcef/dir、実行してcmake -G "Visual Studio 14 Win64" ..


0

私も同じ問題を抱えていました。

自分のマシンにdlibをインストールしようとしたところ、このエラーが発生しました。質問で言及されているチュートリアルは、Visual Studio 2017のダウンロードにつながります。VS2017をアンインストールしてVS 2015をインストールすることで、これを解決しました

このstackoverflowスレッドを介してVS 2015をインストールできます: Visual Studio Community Edition 2015(2017ではない)をダウンロードする方法


0

この質問がビジュアルスタジオ2015に関するものであることを知っています。ビジュアルスタジオ2017でこの問題に直面しました。グーグルで検索したところ、このページに移動しました。最初の2、3の回答を調べた後、これがvc ++のインストールの問題であることに気付きました。ワークロード「c ++を使用したデスクトップ開発」をインストールすると、問題が解決しました。

C ++によるデスクトップ開発


0

ARMが見つかった場合は、Cmakelists.txtを調べて、C ++ for ARMをインストールする必要があります。

それはこれらのパッケージです:

ARM64用C ++ユニバーサルWindowsプラットフォーム「不要」

ARM用のVisual C ++コンパイラおよびライブラリ「不要」

ARM64用Visual C ++コンパイラおよびライブラリ「非常に必要になる可能性が高い」

Required for finding Threads on ARM 
enable_language(C) 
enable_language(CXX)

次に問題

CMAKE_C_COMPILERが見つかりませんでした。

CMAKE_CXX_COMPILERが見つかりませんでした。

clangのようなcコンパイラを指定しない限り、消える可能性があります。おそらく、clangのインストールは、他の方法で機能します。

ARM向けにコンパイルしていない場合は、enable_languageの前に#を付けてcmakelists.txtでオプションの削除を行うことができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.