CMakeLists.txt CMake错误:30(项目):找不到CMAKE_C_COMPILER

我想与Cmake的Visual Studio解决scheme编译的最新版本的aseprite和cmake不断给我:

No CMAKE_C_COMPILER could be found. No CMAKE_CXX_COMPILER could be found. 

我已经下载了gcc,我正在使用visual studio 2015。

我正在关注这个教程/

https://github.com/aseprite/aseprite/blob/master/INSTALL.md

我一直在寻找大约3个小时,并没有在互联网上的解决scheme。

这些错误消息

 CMake Error at ... (project): No CMAKE_C_COMPILER could be found. -- Configuring incomplete, errors occurred! See also ".../CMakeFiles/CMakeOutput.log". See also ".../CMakeFiles/CMakeError.log". 

要么

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

只是表示CMake无法find您的C / CXX编译器来编译一个简单的testing程序(CMake在检测您的编译环境时尝试的第一件事情)。

find问题的步骤取决于您想要生成的构build环境。 下面的教程是关于StackOverflow的一些答案,以及我在MS Windows 7/8/10和Ubuntu 14.04上使用CMake的一些经验。

前提条件

  • 你已经安装了编译器/ IDE,它能够编译任何其他程序(直接没有CMake)
    • 你可能有IDE,但可能没有安装编译器或支持框架,如使用CMake生成VS 2017问题解决scheme中所述,或者如何告诉CMake在Windows上使用Clang?
  • 你有最新的CMake版本
  • 您有希望CMake生成您的生成环境的驱动器的访问权限
  • 你有一个干净的生成目录(因为CMake从最后一次尝试caching的东西)例如作为你的源代码树的子目录

    Windows cmd.exe

     > rmdir /s /q VS2015 > mkdir VS2015 > cd VS2015 

    Bash shell

     $ rm -rf MSYS $ mkdir MSYS $ cd MSYS 

    并确保您的命令shell指向您新创build的二进制输出目录。

一般的东西,你可以/应该尝试

  1. CMake能够find并运行任何/你的默认编译器? 运行时不给发电机

     > cmake .. -- Building for: Visual Studio 14 2015 ... 

    完美的,如果它正确地确定发电机使用 – 就像这里的Visual Studio 14 2015

  2. 那究竟是什么失败?

    在以前的CMakeFiles\CMakeError.log输出目录中,查看CMakeFiles\CMakeError.log ,了解对您有意义的任何错误消息,或尝试打开/编译在CMakeFiles\[Version]\CompilerIdC | CompilerIdCXX直接从命令行(在错误日志中find)。

CMake找不到Visual Studio

  1. 尝试select正确的生成器版本

     > cmake --help > cmake -G "Visual Studio 14 2015" .. 
  2. 如果这无助于尝试设置VS环境variables(path可能会有所不同)

     > "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" > cmake .. 

    或者在All Programs / Visual Studio 2015 / Visual Studio Tools下的Windows开始菜单中使用Developer Command Prompt for VS2015 (感谢@Antwane提示)

背景 :CMake支持所有的Visual Studio版本和风格(Express,Community,Professional,Premium,Test,Team,Enterprise,Ultimate,…)。 为了确定编译器的位置,它使用searchregistry的组合(例如,在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\[Version];InstallDir ),系统环境variables以及 – 如果其他人都没有提出什么东西 – 明白地尝试调用编译器。

CMake找不到GCC(MinGW / MSys)

  1. 你用msys.bat启动MSys bash shell,并试着直接调用gcc

     $ gcc gcc.exe: fatal error: no input files compilation terminated. 

    在这里它确实find了gcc ,并抱怨说我没有给它任何参数。

    所以以下应该工作:

     $ cmake -G "MSYS Makefiles" .. -- The CXX compiler identification is GNU 4.8.1 ... $ make 

    如果没有findGCC调用export PATH=...来添加你的编译器path(请参阅如何在CMake脚本中设置PATH环境variables? ),然后再试一次。

  2. 如果仍然无法正常工作,请尝试通过导出来直接设置CXX编译器path(path可能有所不同)

     $ export CC=/c/MinGW/bin/gcc.exe $ export CXX=/c/MinGW/bin/g++.exe $ cmake -G "MinGW Makefiles" .. -- The CXX compiler identification is GNU 4.8.1 ... $ mingw32-make 

    有关更多详细信息,请参阅如何为cmake指定新的gccpath

    注意 :使用“MinGW Makefiles”生成器时,必须使用MinGW分发的mingw32-make程序

  3. 还是行不通? 这很奇怪。 请确保编译器在那里,它具有可执行的权限(另见前面的前提条件)。

    否则CMake的最后一招是不要尝试任何编译器search本身,直接通过设置CMake的内部variables

     $ cmake -DCMAKE_C_COMPILER=/c/MinGW/bin/gcc.exe -DCMAKE_CXX_COMPILER=/c/MinGW/bin/g++.exe .. 

    欲了解更多细节,请参阅Cmake不尊重-D CMAKE_CXX_COMPILER = g ++和Cmake错误设置编译器

    或者,这些variables也可以通过Windows上的cmake-gui.exe进行设置。 看到Cmake无法find编译器

背景 :与Visual Studio非常相似。 CMake支持各种GCC风格。 它search环境variables(CC,CXX,…)或只是试图调用编译器。 此外,它会检测任何前缀( 交叉编译时 ),并尝试将其添加到GNU编译器工具链( arranlibstripldnmobjdumpobjcopy )的所有binutils中。

在使用Cmake时,我也遇到过这个错误

 No CMAKE_C_COMPILER could be found. No CMAKE_CXX_COMPILER could be found. 

此MSDN库文章https://msdn.microsoft.com/en-us/library/60k1461a.aspx中的“警告”框给了我需要的帮助。;

Visual Studio 2015不包含默认安装的c ++。 所以,创build一个新的c ++项目会提示你下载必要的c ++组件。

我在构buildlibgit2-0.23.4时遇到了这个问题。 对我来说问题是C ++编译器及相关软件包没有安装VS2015,因此“C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC \ vcvarsall.bat”文件丢失,Cmake无法find编译器。

我尝试在Visual Studio 2015 GUI( C:\ Program Files文件(x86)\ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ devenv.exe )中手动创build一个C ++项目,并在创build项目时提示下载C ++及相关软件包。

下载需要的软件包之后,我可以看到vcvarsall.bat&Cmake能够find编译器并成功执行了以下日志:

 C:\Users\aksmahaj\Documents\MyLab\fritzing\libgit2\build64>cmake .. -- Building for: Visual Studio 14 2015 -- The C compiler identification is MSVC 19.0.24210.0 -- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe -- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE) -- Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR) -- zlib was not found; using bundled 3rd-party sources. -- LIBSSH2 not found. Set CMAKE_PREFIX_PATH if it is installed outside of the default search path. -- Looking for futimens -- Looking for futimens - not found -- Looking for qsort_r -- Looking for qsort_r - not found -- Looking for qsort_s -- Looking for qsort_s - found -- Looking for clock_gettime in rt -- Looking for clock_gettime in rt - not found -- Found PythonInterp: C:/csvn/Python25/python.exe (found version "2.7.1") -- Configuring done -- Generating done -- Build files have been written to: C:/Users/aksmahaj/Documents/MyLab/fritzing/libgit2/build64 

我有与CMake相同的错误。 在我的情况下,我在初始CMake对话框中使用了错误的visual studio版本,我们必须selectvisual studio编译器。 然后我把它改为“Visual Studio 11 2012”,事情就起作用了。 (我的电脑上有Visual Studio Ultimate 2012版本)。 一般来说,在初始的CMakeconfiguration对话框中尝试给出一个老版本的Visual Studio版本。

确保您select了正确的Visual Studio版本。 这比看起来更复杂,因为Visual Studio 2015实际上是Visual Studio 14,而Visual Studio 2012也是Visual Studio 11.我错误地select了Visual Studio 15,实际上是Visual Studio 2017,当我安装了2015时。

这里的解决scheme没有解决我的问题,只有当我安装通用C运行时的Windows更新。

现在CMAKE正在工作,没有更多的链接从视觉工作室挂起。

https://support.microsoft.com/en-us/help/3118401/update-for-universal-c-runtime-in-windows

我更新Visual Studio 2015更新2到Visual Studio 2015更新3,它解决了我的问题。

为ubuntu请安装下面的东西:

sudo apt-get update && sudo apt-get install build-essential