web-dev-qa-db-ja.com

Windows上のCMake

WindowsでCMakeを実行しようとすると、次のエラーが表示されます。

-- The C compiler identification is unknown
CMake Error at CMakeLists.txt:3 (PROJECT):
  The CMAKE_C_COMPILER:

    cl

  is not a full path and was not found in the PATH.

  To use the NMake generator with Visual C++, cmake must be run from a Shell
  that can use the compiler cl from the command line.  This environment is
  unable to invoke the cl compiler.  To fix this problem, run cmake from the
  Visual Studio Command Prompt (vcvarsall.bat).

  Tell CMake where to find the compiler by setting either the environment
  variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to
  the compiler, or to the compiler name if it is in the PATH.

しかし、私の「CC」環境変数は設定されています!

>>echo %CC%
C:\Anaconda2\MinGW\x86_64-w64-mingw32\bin\gcc.exe
15
João Abrantes

CMakeのエラーメッセージはここでは誤解を招くので、もう少し詳細な答えが必要だと思います。

要するに、あなたは chicken-and-Egg のような問題に遭遇しました。

CMakeのコンパイラー検出は強力ですが、最初の試行中に-

  • -Gで使用する explicit generator を指定しなかった
  • インストールされているVisual Studioが見つかりませんでした
  • PATH環境にC/C++コンパイラが見つかりませんでした
  • コンパイラへのフルパスで定義されたCC環境変数が見つかりませんでした

デフォルトはnmakeでした。

ここで問題が発生します。変数キャッシュ内の暗黙的なジェネレータ/コンパイラの選択が記憶されます(CMAKE_GENERATORCMakeCache.txtを参照)。複数のコンパイラがインストールされている場合、非常に便利な機能は何ですか。

しかし、エラーメッセージが示すように、CC環境変数を宣言すると、最初の試行でジェネレーターの選択が記憶されていたので遅すぎます。

私はこれから2つの可能な方法を見ます:

  1. cmake.exe -G "MinGW Makefiles" ..(@Guillaumeによってリンクされた答えが示唆するように)で正しいものを与えることによってジェネレーターの選択を無効にします
  2. コンパイラのbinフォルダーをPATH環境に追加した後、プロジェクトのバイナリ出力ディレクトリ(CMakeCache.txtを含む)を削除し、cmake.exe ..を実行します。

参考文献

11
Florian

Cmakeはどのようにインストールされましたか? cygwinを使用してインストールした場合は、 cmake official site から最新のWindowsバージョンを試し、PATH変数を設定して正しいcmakeバージョンが使用されていることを確認してください。それは私のために働いた、それもあなたを助けることを願っています。

0
Kexiii