Windows上的CMake

fhity93d  于 2022-11-11  发布在  Windows
关注(0)|答案(3)|浏览(321)

我尝试在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
cgvd09ve

cgvd09ve1#

因为CMake的错误信息在这里是误导性的,我认为它值得更详细的回答。
简而言之,您遇到了一个chicken-and-egg类的问题。
CMake的编译器检测是强大的,但由于-在第一次尝试-

  • 您没有给予任何explicit generator-G一起使用
  • 它找不到已安装的Visual Studio
  • 在您的PATH环境中找不到任何C/C++编译器
  • 找不到使用编译器完整路径定义的CC环境变量

默认值为nmake
现在问题来了:它会在它的变量缓存中记住您的隐式生成器/编译器选择(参见CMakeCache.txt中的CMAKE_GENERATOR)。如果您安装了多个编译器,这是一个非常有用的特性。
但是,如果您随后声明了CC环境变量(如错误消息所示),那么就太晚了,因为您的生成器的选择在第一次尝试时就被记住了。
我认为有两种可能的解决办法:
1.用cmake.exe -G "MinGW Makefiles" ..给出正确的发生器选择,推翻发生器选择(如@Guillaume链接的答案所示)
1.将编译器的bin文件夹添加到PATH环境后,删除项目的二进制输出目录(包括CMakeCache.txt)并执行cmake.exe ..

参考资料


vmjh9lq9

vmjh9lq92#

我使用cmake -G "MinGW Makefiles" .而不是cmake .,它起作用了!

w6mmgewl

w6mmgewl3#

我遇到了同样的问题,对我有效的是:
1.我安装了Visual Studio(遵循this tutorial)。

  • 你需要安装2019年的版本(现在是2021年)--有一些额外的东西,但没关系。整个东西大约是6.7G。
  • 您实际上并不需要pip install dlib部分和其他部分。

1.在上述教程的基础上,我将此路径添加到了环境变量(C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30037\bin\Hostx64\x64。向环境变量添加路径的方法也可以在上述教程中找到。)

相关问题