web-dev-qa-db-ja.com

CMakeはVisual C ++コンパイラーを見つけられません

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

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.

私はVisual Studioのフォルダcl.exeC:\Program Files\Microsoft Visual Studio 14.0を探しに行きましたが、見つかりませんでした。

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

105
Asher

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

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

113
Asher

これは私のために働いた解決策です:

  1. Visual Studioのコマンドプロンプトツールを開く(管理者として)
  2. CMake実行ファイルがある場所に移動します
  3. Cmake.exeを実行します。
  4. 通常どおりにビルドとソースフォルダを選択します。
  5. 適切なVisual Studioコンパイラを選択して設定ボタンを押してください

うまくいけば、問題なく動作するはずです。

31
Ochi Fortune

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

this answer を検索し、Microsoft SDKのbinからVC binにRC.ExeとRcDll.Dllをコピーすると、CMakeは動作しました。


編集: 別の質問に対するトップの回答 はPATHの問題であることを示唆しているので、Microsoft SDKのbinがPATHに含まれていることを確認すれば十分です。

29
Carl Walsh

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

14

Visual Studio 2017でこれに悩まされている人たち:CMakeに関連する機能があり、それを関連するコンパイラツールセットと共に選択してインストールする必要があります。下のスクリーンショットを見てください。

Visaul C++ tools for CMake must be installed

12
Vadim Berman

上記の解決策がどれもうまくいかない場合は、停止して健全性チェックを行います。

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

まず、VSコマンドプロンプトnot通常のコマンドプロンプトから実行します。 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". ...

それから適切な文字列 with [Arch]を追加しました。

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

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

私はVisual Studio 15にアップグレードしましたが、注意を払っておらず、2012年に生成しようとしていました。

8
TrophyGeek

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

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

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

私はそのコンポーネントを追加するためにVisual Studioインストーラを使いました、そして今CMakeはクラムとして満足です。

7
chowey

メニュー→Visual Studio 2015→Visual Studio 2015のMSBuildコマンドプロンプト。CMakeはcl.exeを見つけます.

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

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

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

CMakeLists.txtのパスに移動して、次の操作を行います。

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

-Gの後のパラメータはCMakeによって取得されるべきです。 --helpを使用してください。あなたはジェネレータを持っているかもしれないし持っていないかもしれません。

4
Alen Wesker

受け入れられた答えに代わるものとして、ここで説明されているようにC++を直接インストールすることができます。

1
Jthorpe

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

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

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

1

Visual Studio 2017をお使いの場合は、少なくともCMake 3.8が必要です。

1
Lars Bilke

Windows 10で、Visual Studio 2015 Professionalを使用しているときにこの問題が発生しましたが、Visual Studio 2015 Expressは機能しました。 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
jpo38

私の場合、問題は、親プロジェクト(これにはgoogletestを含む)があります。

add_subdirectory(gtest_dir)

と定義された

PROJECT( projname CXX )

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

PROJECT(sub_project_name CXX C)

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

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

PROJECT( projname CXX C)

メインのCMakeLists.txtファイルにあります。

0
mojovski

ARMが見つかった場合はCmakelists.txtを調べます。ARM用にC++をインストールする必要があり、さらにARMbinフォルダ用に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)がある場所の#infrontを設定することで、cmakelists.txtのオプションCおよびCXXを削除できます。そしてAndroid ARMプロセッサのコンパイルは避けてください。

0
Dealazer

いくつかのヒント:

  • 'advanced'をチェックし、CMAKE_LINKERとCMAKE_MAKE_PROGRAMを修正して、手動でパスを設定してください。
  • キャッシュを削除する - GUIを使ったCMakeで、File→Delete Cacheをクリックしてください。

私の問題は、前述の組み合わせでした。コンパイラのバージョンを14ではなく15に設定し、修正したらキャッシュを削除しなければなりませんでした。

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

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

0
Rarach

以下のように足りないコンポーネントを追加することで解決します。 Fix

これは最新のWindows 10クリエータバージョンを持っている人たちのための別の解決策かもしれません:

スタックオーバーフローポスト致命的なエラーLNK1104:ファイル 'gdi32.lib'を開けません

0
alanwsx

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

0
Starger

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

設定ボタンを押したときにVisual Studio 14を指定したときには、うまくいきました。

0
Gamaliel

私はVisual Studio 2017のアップデート後、CMake 3.12.1でこの問題に遭遇しました。CMakeを再実行するだけでうまくいきました。

0
0xF

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

Visual Studio 2017パッケージ:

Visual Studio2017 Packages

また、CMakeを最新版にアップグレードしてください。

0
vinodsaluja

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

バージョンは最初のCMake実行のコマンドラインで以下のように指定することができます。

-DCMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION=

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

0
Zitrax

私はあなたがwindows 10 OSを持っているならばstackoverflowでこの解決法を見つけました、そして私は私のために働きます他の解決策を働かせません、以下のステップをすることは問題を解決するでしょう:

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
clever tiger

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

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

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

enter image description here

0

私は関連する問題を抱えていました:cmake --helpを実行するとき、Visual C++ジェネレータはリストにさえ載っていませんでした。

私はコンソールでwhere cmakeを実行しました、そして、cygwinはそれ自身が使われていたcmake.exeファイルも提供していることを知りました。 PATH内のディレクトリの順序を変更すると問題が解決しました。

0
stgatilov