CMakeがVisual C ++コンパイラを見つけられない


118

Visual Studio 2015をインストールし、以前のプロジェクトでCMakeを実行した後、Cコンパイラが見つからなかったことを示すCMakeエラー。

The C compiler identification is unknown
The CXX compiler identification is unknown
CMake Error at CMakeLists.txt:4 (PROJECT):
  No CMAKE_C_COMPILER could be found.

CMake Error at CMakeLists.txt:4 (PROJECT):
  No CMAKE_CXX_COMPILER could be found.

cl.exeVisual Studioフォルダーで検索しましたC:\Program Files\Microsoft Visual Studio 14.0が、見つかりませんでした。

Visual Studio 2015のWindowsで動作するようにCMakeを設定するにはどうすればよいですか?


1
たぶん2015のインストールパスはCMakeが期待するものではありませんか?CMakeのどのバージョンを使用していますか?また、Windows版のCMakeについてはわかりませんが、CMakeがPATHを調べて必要なプログラムを見つけている可能性があるため、更新されていない場合はコンパイラを見つけることができません。
一部のプログラマー、2015

1
Visual Studio 2015のサポートがあると主張するcmakeバージョン3.2.3を使用しています
Asher

1
バージョン3.2.xを使用して、VS2015の前にCmakeをインストールしたときにこの問題に遭遇したので、cmakeを再インストールしてこれを修正してください
Andiana

コンピューターを再起動するのを忘れたり、Visual Studioのインストールや更新後に再起動したくない場合があります。その場合、CMakeはコンパイラを見つけられません。
Noki、

回答:


124

私は解決策を見つけました。Visual Studio IDEは正常にインストールされましたが、ビルドツールはインストールされなかったため、C ++コンパイラはインストールされませんでした。

Visual Studio 2015 GUIでC ++プロジェクトを手動で作成しようとすることで、C ++パッケージをダウンロードするように促すことができました。その後、CMakeは問題なくコンパイラを見つけることができました。


2
クール、この答えは私に手掛かりを与えました。VS2015 ISOを使用してC ++コンポーネントをインストールし、問題を解決しました。
Peter Liang

私もVS2015 ISOを使用してインストールし、基本的なvb / c#パーツのみをインストールしました。他のc ++のものを変更およびインストールするためにISOを再度起動する必要がありました。
Abhinav Gauniyal 16

2
正確にどのパッケージ/コンポーネント/ものをインストールしましたか?Visual C ++ / Win32Projectを作成し、2つのコンポーネントをインストールして、VS内で正常に実行しましたが、cmakeは以前と同様に不満を出しました。ありがとう。-S
ssimm

いいね!
user2434741 2018年

2
これはvs 2017でも機能しました-奇妙なことです!先端をありがとう、仲間!
スティーブHorvath

36

ここに私のために働いた解決策があります:

  1. (管理者として)Visual Studioコマンドプロンプトツールを開きます。Windows 10では、「開発者コマンドプロンプト」と呼ばれることがあります。
  2. CMake実行可能ファイルがある場所に移動します
  3. Cmake.exeを実行する
  4. 通常どおり、ビルドとソースフォルダーを選択します。
  5. 適切なVisual Studioコンパイラを選択し、構成ボタンをクリックします

うまくいけば、問題なく実行できるはずです。


3
管理者としてVSコマンドプロンプトを実行する必要はないと思います。しかし、VSコマンドpromtを実行すると、cmakeが探しているすべてのものがパス上に置かれます。CMakeのインストール方法(パスに配置したかどうか)に応じて、ビルドディレクトリに移動してcmake ..、そこから実行することもできます。とにかく賛成票を投じたのは、たとえばgit-bashターミナルはすべてを自動的にパスに配置しないためです。これは私を助けました!
hetepeperfan 2016年

1
通常、IDEジェネレーターは、devコマンドプロンプトセットにあるさまざまな環境変数を必要としないため、これはソリューションよりも回避策のように見えます(makefileジェネレーターなどを使用している場合にのみ必要です)忍者として)
Ryan Pavlik 2017年

2
更新:Windows 10では、これは開発者コマンドプロンプト
Mattijs

2
非常に奇妙な説明:1:VS Studioコマンドプロンプトとは呼ばれません2:「ナビゲート」、つまり「cd」コマンドを使用することを意味しますか?3:つまり、cmake-guiを実行しますか?ステップ5でボタン4を「クリック」すると言うように、続行しますか?あなたが記入するつもりですか?5:構成ウィンドウのドロップダウンボックスで、VSコンパイラーを選択できますが、CおよびC ++コンパイラーは不明です...
DrumM

1
ところで、検索cmakeと入力するだけでcmake-guiが見つかります
DrumM

31

CMakeError.logファイルを調べたところ、エラーが見つかりました cannot run 'rc.exe'

私はこの回答を検索して見つけ RC.ExeとRcDll.DllをMicrosoft SDKのビンからVCのビンにコピーしたところ、CMakeが機能しました。


編集:別の質問に対するトップの回答は、それがPATHの問題であることを示唆しているため、Microsoft SDKのビンがPATHに含まれていることを確認するのに十分である可能性があります。


15

ジェネレータで正しいバージョンのVisual Studioを使用していることを確認してください。Visual Studio 14のインストール時にVisual Studio 15を誤って選択しました。


3
これも私の問題でした。Visual Studios 2015はバージョン14なので、混乱します。
Paul Wintz 2017

4
VSのバージョンを変更するために、キャッシュの削除が必要になる場合があることに注意してください。これを行うには、[ファイル]> [キャッシュの削除]をクリックします。
Paul Wintz 2017

これは...バージョン管理に役立ちました!
Noel Widmer 2017年

arrrrgさん、@ PaulWintzさん、そのリマインダーをありがとうございます。私の場合、クリーンなcmakeキャッシュでcmakeを実行したと思いますが、VisualStudioがVSの更新を完了するためにコンピューターを再起動するのを待っている間に、cmakeは悪い状況を巧みにキャッシュしました。
orion elenzil

13

Visual Studio 2017でこれに遭遇した人:関連するコンパイラツールセットと一緒に選択およびインストールする必要があるCMakeに関連する機能があります。下のスクリーンショットを参照してください。

CMake用のVisaul C ++ツールをインストールする必要があります


バージョン2015はどうですか?2015インストールでこのチェックボックスが見つかりませんでした。1つの解決策は、2017年に更新することです...
DrumM 2018

1
@DrumM、これは、Visual Studio 2017のために特別である私は機能がVS 2015に存在するとは考えていない
ヴァディム・バーマン

これは必要ですか?Visual Studio内からCMakeを使用するためだけではありませんか?
Peter Mortensen、2018

@PeterMortensen:それは私のために問題を解決しました。繰り返しますが、Visual Studio 2017
Vadim Berman '16

9

上記の解決策のいずれも機能しない場合は、停止して健全性チェックを実行します。

間違った-G <config>文字列を使用してやけどしたため、この誤解を招くエラーが発生しました。

まず、通常のコマンドプロンプトではなく、VSコマンドプロンプトから実行します。Start Menu -> Visual Studio 2015 -> MSBuild Command Prompt for VS2015これはVSツールへのすべての正しいパスを設定するなどで見つけることができます 。

cmakeからどのジェネレーターが利用できるか見てみましょう...

cmake -help

...<snip>... The following generators are available on this platform: Visual Studio 15 [arch] = Generates Visual Studio 15 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 12 2013 [arch] = Generates Visual Studio 2013 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 11 2012 [arch] = Generates Visual Studio 2012 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 10 2010 [arch] = Generates Visual Studio 2010 project files. Optional [arch] can be "Win64" or "IA64". ...

次に、[arch]が追加された適切な文字列選択しました。

mkdir _build cd _build cmake .. -G "Visual Studio 15 Win64"

サブディレクトリでcmakeを実行すると、そのディレクトリのすべてを削除できるため、「クリーン」を実行するのが簡単になります。

Visual Studio 15にアップグレードしましたが、注意を払っていなかったため、2012用に生成しようとしました。


7

私にとって、CMakeError.logファイルをチェックしたところ、次のことがわかりました。

[...]エラーMSB8036:Windows SDKバージョン8.1が見つかりませんでした。必要なバージョンのWindows SDKをインストールするか、プロジェクトのプロパティページでSDKバージョンを変更するか、ソリューションを右クリックして[ソリューションのターゲットを変更]を選択します。

これは、Windows 7でVisual Studio 2017を使用しているにもかかわらず、CMakeがWindows 8.1 SDKを使用して検出プロジェクトを構築しようとしているようです。

Visual Studioインストーラーを使用してそのコンポーネントを追加したところ、CMakeはハマグリとして満足しています。


4

メニュー→Visual Studio 2015→MSBuildコマンドプロンプトfor Visual Studio 2015 cl.exe

set PATH="c:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x64\";%PATH%

上のパスをWindows SDKがインストールされている場所に変更します。

CMakeは見つけることができますrc.exe

cd to the path of CMakeLists.txtand do:

md .build
cd .build
cmake .. -G "Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=Release
cmake --build .

後のパラメータ-Gは、CMakeによってフェッチする必要があります。を使用し--helpます。あなたは発電機を持っていても持っていなくてもかまいません。


msvc 2015および2017がインストールされていて、msvc 2015でビルドしようとすると、vs2015コマンドプロンプトを実行すると10.0 SDKが自動検出されます。"VS2015 x64 Native Tools Command Prompt"を変更してSDKバージョンを指定するには、次のようにコマンドラインパラメータの最後にatを追加して8.1 SDKを強制します。"%comspec%/ k" "C:\ Program Files(x86)\ msdev2015 \ VC \ vcvarsall.bat" "amd64 8.1"
kalmiya

「MSBuildコマンドプロンプトfor Visual Studio 2015」を個別にインストールする必要がありますか?msvc 2017をインストールしましたが、Visual Studioのコマンドプロンプトがありません。
ミーン

2

私は同じ問題に遭遇し、Visual Studio Installを再起動して次のオプションをチェックすることで修正しました:

Windows and Web Development/ Universal Windows App Development Tools/Windows 10 SDK

ほとんどのアプリケーションで使用される標準C ++ヘッダーが含まれているため、多くの場合、それもインストールする必要があります。


2

Visual Studio 2015 Expressが機能しているのに、Visual Studio 2015 Professionalを使用しているときにWindows 10でこの問題が発生しました!Windows 7では、以前は両方のVisual Studioバージョンが機能していました。

Visual Studio 2015 Professional IDEから作成された新しいプロジェクトは正常にコンパイルされますが、CMakeはコンパイラレポートを見つけることができませんでした。

The C compiler identification is unknown
The CXX compiler identification is unknown

CMakeを3.4.1から3.11.4にアップグレードしたところ、問題は解決しました。



1

CMakeで生成されたVisual Studio 2017プロジェクトにも同様の問題がありました。C ++を使用したデスクトップ開発でVisual Studioをインストールするときに、一部のパッケージが欠落していました。スナップショットを参照してください:

Visual Studio 2017パッケージ:

Visual Studio2017パッケージ

また、CMakeを最新バージョンにアップグレードします。


0

私の場合、このエラーの原因となった環境変数セットがありました。この問題は、環境変数からcxx_flagsを削除した後に解決されました。


0

Visual Studio 2017の更新後、CMake 3.12.1でこの問題が発生しました。CMakeを再実行するだけで、問題なく動作しました。


0

私の場合CMakeError.log、CMakeがWindows SDK(MSB8003: Could not find WindowsSDKDir variable from the registry)を見つけられなかったことがわかりました。

バージョンは、次のコマンドを使用して、最初のCMake実行のコマンドラインで指定できます。

-DCMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION=

私はそれを設定した後さらに進んだが、後でもっと多くの問題にぶつかった(そのため、私の環境はどういうわけか台無しになっていると思う)が、多分それはこの問題の誰かを助けるだろう。


0

いくつかのヒント:

  • 「詳細」をチェックし、CMAKE_LINKERとCMAKE_MAKE_PROGRAMを変更して、手動でパスを設定してみてください
  • キャッシュを削除します-GUIを使用したCMakeで、[ファイル]→[キャッシュの削除]に移動します。

私の問題は、前述の組み合わせでした。コンパイラーのバージョンを14ではなく15に設定しました。修正すると、キャッシュを削除する必要がありました。

また、管理者としてVisual Studioコマンドプロンプトを起動し、そこからcmake-gui.exeを実行しました。

その後、すべてが想定どおりに機能しました。


0

私の場合の問題は、googletestを含む親プロジェクトが

add_subdirectory(gtest_dir)

として定義されました

PROJECT( projname CXX )

どういうわけか、CMakeは認識しません

PROJECT(sub_project_name CXX C)

Cコンパイラが親に設定されていないため。

私はを使用して問題を解決しました

PROJECT( projname CXX C)

私のメインCMakeLists.txtファイルに。



0

以前の解決策はどれも私にとってうまくいきませんでした。しかし、Visual Studioバージョン15をインストールしましたが(Visual Studio 2015と混同しないでください)、コンピューターに作成されたディレクトリはVisual Studio 14用であることに気付きました。

構成ボタンを押したときにVisual Studio 14を指定すると、機能しました。


Visual Studioのバージョン番号は...奇妙です。Visual Studioの14スタジオ2015ビジュアル現実である、なしのVisual Studio 2014を参照のtrophygeekの回答がありstackoverflow.com/a/40332976/1319284
kutschkem

0

私はこの解決策をstackoverflowで見つけ、Windows 10 OSを使用している場合は他の解決策では機能しませんが、次の手順を実行すると問題が解決します。

1)C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.1A \ Binに移動します

2)次に、このファイルからRC.exeとRcDllをコピーします

3)C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC \ binに移動し、コピーした2つのファイルを貼り付けます。

それが役に立てば幸いです...


0

ARMが見つかった場合は、Cmakelists.txtを調べて、ARM用C ++をインストールする必要があります。また、ARM binフォルダーにvcvarsall.batを使用する必要があります。

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

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が見つかりませんでした。

上記で問題が解決しない場合は?

オプションで、enable_language(C)がある場所の前に#を設定することにより、cmakelists.txtのオプションCおよびCXXを削除できます。Android ARMプロセッサのコンパイルは避けてください。



0

関連する問題がありました:Visual C ++ジェネレーターは、実行時にリストに載っていませんでしたcmake --help

where cmakeコンソールで実行したところ、cygwin が使用されていた独自のcmake.exeファイルも提供していることがわかりました。PATH内のディレクトリの順序を変更すると、問題が修正されました。


0

返されたCMakeFilesのCMakeErrors.logを確認します。

C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V140 \ Platforms \ x64 \ PlatformToolsets \ v140_xp \ Toolset.targets(36,5):warning MSB8003:レジストリからWindowsSdkDir_71A変数が見つかりませんでした。TargetFrameworkVersionまたはPlatformToolsetが無効なバージョン番号に設定されている可能性があります。

このエラーは、XP用のビルドツール(v140_xp)がインストールされていないことを意味します。これを修正するために、Visual Studio 2019インストーラーの個別のコンポーネントタブに適切な機能をインストールしました:

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


0

CMake GUIとVS 21019 Community Editionでこの問題が発生しました。私はVisual Studioの前にCMakeをインストールした可能性があると思います。確かに、CMake 3.15.2を3.15.3に更新した後、問題は解消しました。



-3

CMakeはVisual Studioコンパイラを見つけることができないからです。必要なコンパイラをダウンロードするプロジェクトを開始すると、CMakeはそのプロジェクトを見つけることができなければなりません。

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