web-dev-qa-db-ja.com

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

私はasepriteの最新版をコンパイルするためにCMakeでVisual Studioソリューションを作成しようとしています、そしてCMakeは私に与え続けています:

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

79
Caio Fontes

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

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に関する私自身の経験の一部です。

前提条件

あなたができる/できそうな一般的なこと

  1. CMakeはデフォルトのコンパイラを見つけて実行することができますか?発電機を与えずに走る

    > cmake ..
    -- Building for: Visual Studio 14 2015
    ...
    

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

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

    前のビルド出力ディレクトリで、意味のあるエラーメッセージがないかCMakeFiles\CMakeError.logを参照するか、CMakeFiles\[Version]\CompilerIdC | CompilerIdCXXで生成されたテストプロジェクトを(エラーログにあるように)直接開いてコンパイルします。

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 ..
    

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

_/Background:CMakeはすべてのVisual Studioのリリースとフレーバー(Express、Community、Professional、Premium、Test、Team、Enterprise、Ultimateなど)をサポートします。コンパイラの場所を決定するためには、レジストリの検索(例:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\[Version];InstallDir)、システム環境変数、そして(他のものが何も思い付かなかった場合)コンパイラの呼び出しを試してみてください。

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

  1. msys.batでMSys bashシェルを起動し、直接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"ジェネレータを使用するときは、MinGWと共に配布されているmingw32-makeプログラムを使用する必要があります。

  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エラー設定コンパイラを参照してください。

    あるいは、これらの変数はWindowsのcmake-gui.exeで設定することもできます。 CMAKEはコンパイラを見つけることができませんを参照してください。

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

77
Florian

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

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

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

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

Enter image description here

15
Wim Vanhenden

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

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

MSDNライブラリの記事の「警告」ボックスVisual C++ 2015のVisual C++は助けになりました必要なもの.

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

12

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

Sudo apt-get update && Sudo apt-get install build-essential
10
Vishnu

Libgit2-0.23.4をビルド中にこの問題に遭遇しました。私にとっての問題は、C++コンパイラと関連パッケージがVS2015と一緒にインストールされていなかったということでした。したがって、 "C:¥Program Files(x86)¥Microsoft Visual Studio 14.0¥VC¥vcvarsall.bat" fileが見つからずCmakeコンパイラを見つけることができませんでした。

Visual Studio 2015のGUIでC++プロジェクトを手動で作成してみたところ( C:¥Program Files(x86)¥Microsoft Visual Studio 14.0¥Common7¥IDE¥devenv.exe )、プロジェクトの作成中に表示されました。 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
4
Aksh1801

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

それから私はそれを "Visual Studio 11 2012"に変更しました。 (私のPCにはVisual Studio Ultimate 2012バージョンがあります)。一般的に、初期のCMake設定ダイアログで古いバージョンのVisual Studioを入力するようにしてください。

4
TSac

私にとって、この問題は私が自分のプロジェクトをもっと浅い親ディレクトリに移動したときに、つまり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コンパイラがないと結論を下します。

4
spenceryue

これは Ubuntu 17.10 でうまくいきます(Artful Aardvark):

apt-get update
apt-get install build-essential
3
purval_patel

正しいバージョンのVisual Studioを選択したことを確認してください。これは、Visual Studio 2015が実際にはVisual Studio 14であり、同様にVisual Studio 2012がVisual Studio 11であるために考えられているよりも巧妙です。

2
Aryaman Gupta

念のために、将来的に私のような人に役立ちます。

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

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

とにかく、これらの多くのフォーラムに投稿されているように、あらゆる種類の修正の後、PATH変数の内容が複数のVisual StudioのBINパスなどで散らばっていないことを確認するのは簡単なことであることがわかりました。そして代わりに、

a)あなたのコンパイラの場所(すなわちあなたの好みのバージョンのVisual Studioではcl.exe)、私の場合は(64ビットプラットフォームをターゲットにして) C:¥Program Files(x86)¥Microsoft Visual Studio¥2017¥Community¥VC¥Tools¥MSVC¥14.15.26726¥bin¥Hostx64¥x64

b)依存するDLLが含まれているフォルダ(cl.exeは依存しています):api-ms-win-crt-runtime-l1- 1-0.dll - 私のマシン上でどれが:

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

これら2つのディレクトリは、(Admin特権付きコマンドプロンプトの下で動作する)単純化されたCUSTOMシステムパス変数に追加され、「No CMAKE_C_COMPILERが見つかりませんでした」および「No CMAKE_CXX_COMPILERが見つかりませんでした」がなくなりました。エラー.

誰かに役立つことを願っています。

1
GreatCentralSun

ユニバーサルCランタイム用のWindows Updateをインストールした場合にのみ、ここでの解決策はどれも私の問題を解決しません。

これでCMakeは動作し、Visual Studioからリンクが切れなくなりました。

Windows用のユニバーサルCランタイムのアップデート

1
Meir Gerenstadt

自分がSudoユーザーであり、自分が作業しているディレクトリに対して読み取り/書き込みアクセス権があることを確認することもできます。私はOS Xで同様の問題を抱えていた、そして私はそれをただSudoモードに入ることによって直された。

1

ccache が有効な場合、 CMakeのXcodeジェネレータ を使用している場合、正確にエラーが報告されます。 - ) 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
normanius

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

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
helmken

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

0
TripleS

私にとっては、Visual Studioに付属のDeveloper Command Promptを使用してから、cdyour/jcef/dirに変更してcmake -G "Visual Studio 14 Win64" ..を実行することに成功しました。

0
Marc Dirven

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

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

このスタックオーバーフロースレッドでVS 2015をインストールすることができます。 Visual Studio Community Edition 2015のダウンロード方法(2017年ではない)

0
Aprajita Verma

ARMが見つかったらCmakelists.txtを見てください。ARM用にC++をインストールする必要があります。

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

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のオプションのremoveを使用できます。

0
Dealazer

私はこの質問がビジュアルスタジオ2015に関するものであることを知っています。私はビジュアルスタジオ2017でこの問題に直面しました。最初の2,3の答えを見た後、私はこれがvc ++のインストールに問題があることに気づきました。ワークロード "c ++によるデスクトップ開発"をインストールすることで問題は解決しました。

Desktop development with c++

0
Asad