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.exe
でC:\Program Files\Microsoft Visual Studio 14.0
を探しに行きましたが、見つかりませんでした。
WindowsでVisual Studio 2015を使用するようにCMakeを設定するにはどうすればよいですか?
私はその解決策を見つけました。 Visual Studio IDEは正常にインストールされましたが、ビルドツールはインストールされず、したがってC++コンパイラもインストールされませんでした。
手動で Visual Studio 2015のGUIでC++プロジェクトを作成しようとすることで C++パッケージをダウンロードするように促すことができました。 CMakeはその後、問題なくコンパイラを見つけることができました。
これは私のために働いた解決策です:
うまくいけば、問題なく動作するはずです。
CMakeError.logファイルを調べたところ、cannot run 'rc.exe'
に関するエラーが見つかりました。
this answer を検索し、Microsoft SDKのbinからVC binにRC.ExeとRcDll.Dllをコピーすると、CMakeは動作しました。
編集: 別の質問に対するトップの回答 はPATHの問題であることを示唆しているので、Microsoft SDKのbinがPATHに含まれていることを確認すれば十分です。
ジェネレータで正しいバージョンのVisual Studioを使用していることを確認してください。 Visual Studio 14のインストール時に、誤ってVisual Studio 15を選択しました。
上記の解決策がどれもうまくいかない場合は、停止して健全性チェックを行います。
間違った-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年に生成しようとしていました。
私にとっては、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はクラムとして満足です。
メニュー→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
を使用してください。あなたはジェネレータを持っているかもしれないし持っていないかもしれません。
受け入れられた答えに代わるものとして、ここで説明されているようにC++を直接インストールすることができます。
私は同じ問題に遭遇し、Visual Studioのインストールを再起動して次のオプションをチェックすることでそれを修正しました:
Windows and Web Development
/Universal Windows App Development Tools
/Windows 10 SDK
ほとんどのアプリケーションで使用されている標準のC++ヘッダーが含まれているため、インストールも必要になることがよくあります。
Visual Studio 2017をお使いの場合は、少なくともCMake 3.8が必要です。
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にアップグレードしたところ、問題は解決しました。
私の場合、問題は、親プロジェクト(これにはgoogletestを含む)があります。
add_subdirectory(gtest_dir)
と定義された
PROJECT( projname CXX )
どういうわけか、CMakeは認識しません
PROJECT(sub_project_name CXX C)
cコンパイラが親に設定されていないためです。
を使用して問題を解決しました
PROJECT( projname CXX C)
メインのCMakeLists.txt
ファイルにあります。
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プロセッサのコンパイルは避けてください。
いくつかのヒント:
私の問題は、前述の組み合わせでした。コンパイラのバージョンを14ではなく15に設定し、修正したらキャッシュを削除しなければなりませんでした。
管理者としてVisual Studioのコマンドプロンプトも起動し、そこからcmake-gui.exeを実行しました。
その後、すべてが想定通りに機能しました。
以下のように足りないコンポーネントを追加することで解決します。
これは最新のWindows 10クリエータバージョンを持っている人たちのための別の解決策かもしれません:
スタックオーバーフローポスト致命的なエラーLNK1104:ファイル 'gdi32.lib'を開けません
私の場合は、このエラーの原因となっている環境変数セットがありました。環境変数からcxx_flagsを削除した後、問題は解決しました。
前の解決策のどれも私のために働きませんでした。ただし、Visual Studioバージョン15(Visual Studio 2015と混同しないように)をインストールしたにもかかわらず、コンピューターに作成されたディレクトリがVisual Studio 14用であることに気付きました。
設定ボタンを押したときにVisual Studio 14を指定したときには、うまくいきました。
私はVisual Studio 2017のアップデート後、CMake 3.12.1でこの問題に遭遇しました。CMakeを再実行するだけでうまくいきました。
私の場合はCMakeError.log
でCMakeがWindows SDK(MSB8003: Could not find WindowsSDKDir variable from the registry
)を見つけられなかったことがわかりました。
バージョンは最初のCMake実行のコマンドラインで以下のように指定することができます。
-DCMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION=
私はそれを設定した後さらに得た、しかし私は後でもっと多くの問題にぶつかった(だから私の環境はどういうわけかめちゃくちゃになっていると思う)、しかし多分それはこの問題の誰かを助けるでしょう。
私はあなたが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つのファイルを貼り付けます。
それがすべて私はそれが役に立つことを願っています...
返される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インストーラーの[個別のコンポーネント]タブで適切な機能をインストールしました。
私は関連する問題を抱えていました:cmake --help
を実行するとき、Visual C++ジェネレータはリストにさえ載っていませんでした。
私はコンソールでwhere cmake
を実行しました、そして、cygwinはそれ自身が使われていたcmake.exeファイルも提供していることを知りました。 PATH内のディレクトリの順序を変更すると問題が解決しました。