私はasepriteの最新版をコンパイルするためにCMakeでVisual Studioソリューションを作成しようとしています、そしてCMakeは私に与え続けています:
No CMAKE_C_COMPILER could be found.
No CMAKE_CXX_COMPILER could be found.
私はすでにGCCをダウンロードしていて、 Visual Studio 2015 を使用しています。
私はこのチュートリアルに従っています:
これらのエラーメッセージ
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に関する私自身の経験の一部です。
前提条件
あなたはクリーンなビルドディレクトリを持っています(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
| 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 ..
またはWindowsのスタートメニューのDeveloper Command Prompt for VS2015
All 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)を見つけることができません
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環境変数を設定する方法?を参照)、もう一度やり直してください。
それでもうまくいかない場合は、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
プログラムを使用する必要があります。
まだ動かない?それは変だ。コンパイラがそこにあり、実行可能な権限を持っていることを確認してください(上記の前提条件の章も参照)。
そうでなければ、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(ar
、ranlib
に追加しようとします。 、strip
、ld
、nm
、objdump
、およびobjcopy
)。
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++コンポーネントをダウンロードするように求められます。
Ubuntuの場合は、以下のものをインストールしてください。
Sudo apt-get update && Sudo apt-get install build-essential
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
私はCMakeでも同じエラーがありました。私の場合は、最初のCMakeダイアログで、間違ったバージョンのVisual Studioを使用しています。ここでは、Visual Studioコンパイラを選択する必要があります。
それから私はそれを "Visual Studio 11 2012"に変更しました。 (私のPCにはVisual Studio Ultimate 2012バージョンがあります)。一般的に、初期のCMake設定ダイアログで古いバージョンのVisual Studioを入力するようにしてください。
私にとって、この問題は私が自分のプロジェクトをもっと浅い親ディレクトリに移動したときに、つまり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コンパイラがないと結論を下します。
これは Ubuntu 17.10 でうまくいきます(Artful Aardvark):
apt-get update
apt-get install build-essential
正しいバージョンのVisual Studioを選択したことを確認してください。これは、Visual Studio 2015が実際にはVisual Studio 14であり、同様にVisual Studio 2012がVisual Studio 11であるために考えられているよりも巧妙です。
念のために、将来的に私のような人に役立ちます。
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が見つかりませんでした」がなくなりました。エラー.
誰かに役立つことを願っています。
ユニバーサルCランタイム用のWindows Updateをインストールした場合にのみ、ここでの解決策はどれも私の問題を解決しません。
これでCMakeは動作し、Visual Studioからリンクが切れなくなりました。
自分がSudoユーザーであり、自分が作業しているディレクトリに対して読み取り/書き込みアクセス権があることを確認することもできます。私はOS Xで同様の問題を抱えていた、そして私はそれをただSudoモードに入ることによって直された。
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>
コマンドラインから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環境変数にそれは私のために働いた。
私はVisual Studio 2015 update 2をVisual Studio 2015 update 3に更新し、それが私の問題を解決しました。
私にとっては、Visual Studioに付属のDeveloper Command Promptを使用してから、cd
をyour/jcef/dir
に変更してcmake -G "Visual Studio 14 Win64" ..
を実行することに成功しました。
私は同じ問題を抱えていました。
私は自分のマシンにdlibをインストールしようとしていましたが、このエラーが発生しました。質問に記載されているチュートリアルは、ビジュアルスタジオ2017のダウンロードにつながります。私はVS 2017をアンインストールし、VS 2015をインストールすることでこれを解決しました
このスタックオーバーフロースレッドでVS 2015をインストールすることができます。 Visual Studio Community Edition 2015のダウンロード方法(2017年ではない)
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を使用できます。