web-dev-qa-db-ja.com

CXXコンパイラの識別は不明です

Visual Studio 2012を使用してWindows 7 64BitでCMake(v2.8.12)を使用してプロジェクトをコンパイルする際に問題が発生しています。CMakeから次のエラーが発生します。管理者権限を使用してVisual StudioコマンドラインからCmakeを起動しようとしました。 CMake 2.8.11にも同様のバグがあったようです。 http://www.cmake.org/Bug/view.php?id=1444

CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeDetermineCompilerId.cmake:446 (execute_process):
  execute_process given COMMAND argument with no value.
Call Stack (most recent call first):
  C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeDetermineCompilerId.cmake:48 (CMAKE_DETERMINE_COMPILER_ID_VENDOR)
  C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeDetermineCCompiler.cmake:131 (CMAKE_DETERMINE_COMPILER_ID)
  CMakeLists.txt:2 (project)


The C compiler identification is unknown
CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeDetermineCompilerId.cmake:446 (execute_process):
  execute_process given COMMAND argument with no value.
Call Stack (most recent call first):
  C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeDetermineCompilerId.cmake:48 (CMAKE_DETERMINE_COMPILER_ID_VENDOR)
  C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeDetermineCXXCompiler.cmake:127 (CMAKE_DETERMINE_COMPILER_ID)
  CMakeLists.txt:2 (project)


The CXX compiler identification is unknown
Could NOT find SWIG (missing:  SWIG_EXECUTABLE SWIG_DIR) 
CMake Warning at src/CMakeLists.txt:44 (message):
  SWIG was not found.  You will not be able to compile for C#.


Configuring incomplete, errors occurred!
See also "C:/Users/hci/laser_control/CMakeFiles/CMakeOutput.log".
See also "C:/Users/hci/laser_control/CMakeFiles/CMakeError.log".
18
user3110931

私は同じ問題を抱えていて、管理者としてcmakeを実行して修正しました

10
Fuvizzo

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

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

cMakeはコンパイラを見つけた、または仮定したが、簡単なテストプログラムをコンパイルできなかったことを意味します。

CMakeFiles\CMakeError.logを見て、そこにあるエラーメッセージを確認してください:

  1. cMakeが使用したコンパイラパス/コマンドライン
  2. コンパイラを呼び出すエラーメッセージは何でしたか

    例えばLINK : fatal error LNK1181: cannot open input file 'kernel32.lib'

--debug-trycompilecmake呼び出しに追加すると、CMakeはコンパイルのテストを試みたファイルを保持します(したがって、cmd Shell)。

最後にこの問題があったのは...

最後にこの問題が発生したのは、Visual Studio 2012 Professionalの標準インストールでWindows SDKがインストールされなかったときです(エラーログにはSDKヘッダーが表示されていませんでした)。

SDKのインストールを確認するには、たとえばリソースコンパイラがインストールされていることを確認してください。次のようなパスにある必要があります。

C:\Program Files (x86)\Microsoft SDKs\Windows\v[some version]\bin\RC.Exe

これがないか、より正確なSDKがなかったので、インストールしました Windows 8.1 SDK (Visual Studio 2012はWindows 8.xをターゲットにしているので)そしてCMakeが再び(テスト)プログラムをコンパイルできるようになりました。

参照

3
Florian

Microsoft Visual Studio 2012を使用している場合、KB2781514の更新が欠落している可能性があるため、同様の問題もありました。

次の更新プログラムをインストールした後、CMakeはVisual Studio 2012 c/c ++コンパイラを正しく検出し始めます。

http://www.Microsoft.com/en-us/download/details.aspx?id=3602

2
Jifeng Zhang

私は同じ問題を抱えていたので、"File -> Delete Cache"、間違ったバージョンのVisual Studioを使用するようにCMakeを誤って設定したため。

0

私は同じ問題に直面しました。 Visual Studioからプロジェクトをビルドして実行してもうまくいきませんでした。しかし、次は私のために働いた:

  • Visual Studioツールから開発者向けのコマンドプロンプトを開きます。
  • Cmake.exeが存在するディレクトリに移動します。
  • それを実行します。

それがあなたにとってもうまくいくことを願っています。

0
Asif Kazmi

MSソフトウェアをいくつかアンインストールした後、この問題が発生しました。 Visual Studio 2012を修復して修正しました。まず[コントロールパネル]に移動し、次にVisual Studioを選択して修復します。

0
wangdq

Visual Studioの適切なバージョンを選択してください。たとえば、Visual Studio 2012はバージョン11です。

0
Rahul Sood

Cmake 2.8.12とVisual Studio 10でも同じ問題が発生します。Cmakeがコンパイラを見つけられない場合があります。最新バージョンをアンインストールして問題を解決し、cmake 2.8.10をインストールしました。

0
Tonmoy

CMake 3.4.0を使用している場合は、新しいバージョンにアップグレードしてください。これに関するバグは比較的最近修正されました( バグレポート を参照)。

0
Daniel Geier