web-dev-qa-db-ja.com

WindowsでCMakeを実行する

現在、Windows 7(64ビット)システムでCMakeを実行しようとしています。 TagLib をコンパイルして、後で作業しているQtアプリケーションで使用します。 MinGW( この他の質問 のようなVisual C++ではなく)でコンパイルしたいと思います。

インストーラー(cmake-2.8.3-win32-x86.exe)をダウンロードしてインストールします(パスにCMakeを追加することも選択します)。次に、CMakeLists.txtファイルが存在するディレクトリに移動して、cmake .。その後、この巨大なエラーが発生します。

C:\Users\Joel\Downloads\taglib-1.6.3>cmake .
CMake Warning at CMakeLists.txt:1 (project):
  To use the NMake generator, cmake must be run from a Shell that can use the
  compiler cl from the command line.  This environment does not contain
  INCLUDE, LIB, or LIBPATH, and these must be set for the cl compiler to
  work.


-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
CMake Warning at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/Platform/Windows-cl.cmake:
28 (ENABLE_LANGUAGE):
  To use the NMake generator, cmake must be run from a Shell that can use the
  compiler cl from the command line.  This environment does not contain
  INCLUDE, LIB, or LIBPATH, and these must be set for the cl compiler to
  work.
Call Stack (most recent call first):
  C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeCInformation.cmake:60 (INCLUDE)
  CMakeLists.txt:1 (project)


CMake Error: your RC compiler: "CMAKE_RC_COMPILER-NOTFOUND" was not found.   Please set CMAKE_RC_COM
PILER to a valid compiler path or name.
-- Check for CL compiler version
-- Check for CL compiler version - failed
-- Check if this is a free VC compiler
-- Check if this is a free VC compiler - yes
-- Using FREE VC TOOLS, NO DEBUG available
-- Check for working C compiler: cl
CMake Warning at CMakeLists.txt:2 (PROJECT):
  To use the NMake generator, cmake must be run from a Shell that can use the
  compiler cl from the command line.  This environment does not contain
  INCLUDE, LIB, or LIBPATH, and these must be set for the cl compiler to
  work.


CMake Warning at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/Platform/Windows-cl.cmake:
28 (ENABLE_LANGUAGE):
  To use the NMake generator, cmake must be run from a Shell that can use the
  compiler cl from the command line.  This environment does not contain
  INCLUDE, LIB, or LIBPATH, and these must be set for the cl compiler to
  work.
Call Stack (most recent call first):
  C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeCInformation.cmake:60 (INCLUDE)
  CMakeLists.txt:2 (PROJECT)


CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeRCInformation.cmake:22
(GET_FILENAME_COMPONENT):
  get_filename_component called with incorrect number of arguments
Call Stack (most recent call first):
  C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/Platform/Windows-cl.cmake:28 (ENABLE_LANG
UAGE)
  C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeCInformation.cmake:60 (INCLUDE)
  CMakeLists.txt:2 (PROJECT)


CMake Error: CMAKE_RC_COMPILER not set, after EnableLanguage
CMake Error: your C compiler: "cl" was not found.   Please set CMAKE_C_COMPILER to a valid compiler
path or name.
CMake Error: Internal CMake error, TryCompile configure of cmake failed
-- Check for working C compiler: cl -- broken
CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:52
(MESSAGE):
  The C compiler "cl" is not able to compile a simple test program.

  It fails with the following output:





  CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
  CMakeLists.txt:1 (project)


CMake Error: your C compiler: "cl" was not found.   Please set CMAKE_C_COMPILER to a valid compiler
path or name.
CMake Error: your CXX compiler: "cl" was not found.   Please set CMAKE_CXX_COMPILER to a valid compi
ler path or name.
-- Configuring incomplete, errors occurred!

C:\Users\Joel\Downloads\taglib-1.6.3>

それがクロスプラットフォームのメーカーとして宣伝されていることを考えると、箱から出して非常に激しく失敗したことにはちょっと驚きました。

INCLUDE、LIB、およびLIBPATH(Windows環境変数)をすべてMinGWバイナリディレクトリ(C:\ MinGW\bin)に設定しようとしましたが、それでも同じエラーが発生します。また、CMAKE_C_COMPILERとCMAKE_CXX_COMPILERをg ++の場所(C:\ MinGW\bin\g ++)に設定してみました。

誰がここで何が起こっているのか知っていますか?

ソリューション:

Tiburの提案に従って、makeファイルを作成するためにcmake GUIを実行しました。次に、ディレクトリtaglibディレクトリに移動して、mingw32-make.exe実際のビルドを行います。

62
Joel Verhagen

WindowsのデフォルトのジェネレーターはNMAKEに設定されているようです。使用してみてください:

cmake -G "MinGW Makefiles"

または、GUIを使用して、ジェネレータのプロンプトが表示されたらMinGW Makefilesを選択します。 CMakeを実行しようとしたディレクトリをクリーンアップするか、GUIでキャッシュを削除することを忘れないでください。それ以外の場合は、NMAKEで再試行します。

85
tibur

Visual Studioのインストールディレクトリにvcvars32.batがあります。そのバッチプログラムの最後にcmd.exe呼び出しを追加して起動できます。そのシェルからCMakeまたはcmake-guiを使用でき、cl.exeはCMakeに認識されます。

14
Ivan Krylov