在Windows上运行CMake

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Windows上运行CMake相关的知识,希望对你有一定的参考价值。

我目前正在尝试让CMake在我的Windows 7(64位)系统上运行。我想编译TagLib以便以后使用我正在研究的Qt应用程序。我想用MinGW(而不是像Qazxswpoi中的Visual C ++)编译它。

我下载安装程序(cmake-2.8.3-win32-x86.exe)并安装它(我也选择将CMake添加到我的路径中)。然后我转到CMakeLists.txt文件的目录,然后运行this other question。然后它给了我这个巨大的错误。

cmake .

考虑到它宣称自己是一个跨平台的品牌,我有点惊讶它开箱即用。

我尝试将INCLUDE,LIB和LIBPATH(Windows环境变量)全部设置到我的MinGW二进制文件目录(C: MinGW bin),但它仍然给我同样的错误。我还尝试将CMAKE_C_COMPILER和CMAKE_CXX_COMPILER设置为g ++(C: MinGW bin g ++)的位置。

有谁知道这里发生了什么?

解:

根据tibur的建议,我运行了cmake GUI来创建make文件。然后我进入目录taglib目录并运行C:UsersJoelDownloads aglib-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:UsersJoelDownloads aglib-1.6.3> 来进行实际构建。

答案

Windows的默认生成器似乎设置为NMAKE。尝试使用:

mingw32-make.exe

或者使用GUI,并在提示生成器时选择MinGW Makefile。不要忘记清理尝试运行CMake的目录,或者删除GUI中的缓存。否则,它将再次尝试使用NMAKE。

另一答案

Visual Studio安装目录中有一个vcvars32.bat。您可以在该批处理程序的末尾添加调用cmd.exe并启动它。从那个shell你可以使用CMake或cmake-gui和CMake知道cl.exe。

以上是关于在Windows上运行CMake的主要内容,如果未能解决你的问题,请参考以下文章

使用 CMake 在 Windows 10 上构建 uWebSockets

如何使用 CMake 在 C++ 代码中运行 gtest? (未见测试)

在 Windows 7 上从 emacs 运行 nmake

CMake 错误无法运行 MSBuild 命令

在 Windows 上使用 CMake 和 MinGW 链接 LLVM 库

[cmake]如何使用 cmake 在 windows 上包含和链接系统库