我正在尝试使用CMake制作一个Visual Studio解决方案来编译最新版本的aseprite,而CMake一直在给我:
No CMAKE_C_COMPILER could be found.
No CMAKE_CXX_COMPILER could be found.
我已经下载了GCC,我正在使用Visual Studio 2015。
我正在学习本教程:
答案 0 :(得分:76)
这些错误消息
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无法找到你的C / CXX编译器来编译一个简单的测试程序(CMake在检测你的构建环境时尝试的第一件事)。
找到问题的步骤取决于您要生成的构建环境。以下教程是Stack Overflow上的答案集合,以及我在Microsoft Windows 7/8/10和Ubuntu 14.04上使用CMake的一些经验。
<强>前提条件强>
你有一个干净的构建目录(因为CMake确实缓存了上次尝试的内容),例如作为源树的子目录
Windows cmd.exe
> rmdir /s /q VS2015
> mkdir VS2015
> cd VS2015
Bash shell
$ rm -rf MSYS
$ mkdir MSYS
$ cd MSYS
并确保您的命令shell指向新创建的二进制输出目录。
您可以/应该尝试的一般事项
CMake能否找到并运行任何/您的默认编译器?在不给发电机的情况下运行
> cmake ..
-- Building for: Visual Studio 14 2015
...
如果正确确定要使用的生成器,则非常完美 - 例如Visual Studio 14 2015
实际上失败了什么?
在上一个构建输出目录中,查看CMakeFiles\CMakeError.log
以查找对您有意义的任何错误消息,或者尝试直接从CMakeFiles\[Version]\CompilerIdC
| CompilerIdCXX
打开/编译生成的测试项目命令行(在错误日志中找到)。
CMake无法找到Visual Studio
尝试选择正确的generator version:
> cmake --help
> cmake -G "Visual Studio 14 2015" ..
如果这没有用,请尝试先设置Visual Studio环境变量(路径可能会有所不同):
> "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"
> cmake ..
或使用Developer Command Prompt for VS2015
/ All Programs
/ Visual Studio 2015
下的Windows开始菜单中的Visual Studio Tools
快捷方式(感谢@Antwane提示)。
背景:CMake确实支持所有Visual Studio版本和风格(Express,Community,Professional,Premium,Test,Team,Enterprise,Ultimate等)。为了确定编译器的位置,它使用搜索注册表的组合(例如,在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\[Version];InstallDir
),系统环境变量和 - 如果其他人都没有提出某些东西 - 明显地尝试调用编译器。
CMake无法找到GCC(MinGW / MSys)
您使用bash
启动MSys msys.bat
shell,然后尝试直接调用gcc
$ gcc
gcc.exe: fatal error: no input files
compilation terminated.
这里确实找到了gcc
并且抱怨我没有给它任何参数来使用。
所以以下内容应该有效:
$ cmake -G "MSYS Makefiles" ..
-- The CXX compiler identification is GNU 4.8.1
...
$ make
如果未找到GCC,请致电export PATH=...
添加编译器路径(请参阅 How to set PATH environment variable in CMake script? ),然后重试。
如果它仍然无法正常工作,请尝试通过导出它来直接设置CXX
编译器路径(路径可能会有所不同)
$ 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
有关详细信息,请参阅How to specify new GCC path for CMake
注意:使用“MinGW Makefile”生成器时,您必须使用随MinGW分发的mingw32-make
程序
仍然不能正常工作?那真是怪了。请确保编译器在那里并且它具有可执行权限(另请参见上面的前提条件)。
否则CMake的最后一招是不尝试任何编译器搜索本身并直接设置CMake的内部变量
$ cmake -DCMAKE_C_COMPILER=/c/MinGW/bin/gcc.exe -DCMAKE_CXX_COMPILER=/c/MinGW/bin/g++.exe ..
有关详细信息,请参阅 Cmake doesn't honour -D CMAKE_CXX_COMPILER=g++ 和 Cmake error setting compiler
或者,也可以在Windows上通过cmake-gui.exe
设置这些变量。请参阅 Cmake cannot find compiler
背景:与Visual Studio大致相同。 CMake支持各种GCC口味。它搜索环境变量(CC,CXX等)或只是尝试调用编译器。此外,它将检测任何前缀(当cross-compiling时)并尝试将其添加到GNU编译器工具链的所有binutils(ar
,ranlib
,strip
,{{1 }},ld
,nm
和objdump
)。
答案 1 :(得分:14)
安装Visual Studio 15 2017后,发生了这种情况。
Visual Studio 14 2015的C ++编译器不是问题。这似乎是Windows 10 SDK的一个问题。
将Windows 10 SDK添加到Visual Studio 14 2015为我解决了这个问题。
参见附页截图。
答案 2 :(得分:12)
使用CMake时我也遇到了这个错误:
No CMAKE_C_COMPILER could be found.
No CMAKE_CXX_COMPILER could be found.
警告&#39; MSDN库文章 Visual C++ in Visual Studio 2015 中的框给了我所需的帮助。
Visual Studio 2015默认情况下不安装C ++。因此,创建一个新的C ++项目将提示您下载必要的C ++组件。
答案 3 :(得分:9)
对于Ubuntu,请安装以下内容:
sudo apt-get update && sudo apt-get install build-essential
答案 4 :(得分:4)
我和CMake有同样的错误。就我而言,我在初始CMake对话框中使用了错误的Visual Studio版本,我们必须选择Visual Studio编译器。
然后我将其更改为&#34; Visual Studio 11 2012&#34;事情很有效。 (我的PC上有Visual Studio Ultimate 2012版本)。通常,尝试在初始CMake配置对话框中输入旧版本的Visual Studio版本。
答案 5 :(得分:4)
我在构建libgit2-0.23.4时遇到了这个问题。对我来说问题是C ++编译器&amp;相关软件包未随VS2015一起安装,因此&#34; C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC \ vcvarsall.bat&#34; 文件丢失且Cmake不是&#39 ;能够找到编译器。
我尝试在Visual Studio 2015 GUI中手动创建C ++项目( C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ devenv.exe ) 在创建项目时,我得到了下载C ++和C ++的提示。相关包。
下载所需的软件包后,我可以看到vcvarsall.bat&amp; Cmake能够找到编译器&amp;使用以下日志成功执行:
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
答案 6 :(得分:4)
对我来说,当我将项目移至较浅的父目录(即至)时,此问题在Windows上消失了:
C:\Users\spenc\Desktop\MyProjectDirectory
代替
C:\Users\spenc\Desktop\...\MyProjectDirectory
。
我认为问题的根源是MSBuild has a file path length restriction到260个字符。这会导致CMake执行基本编译器测试以构建名为CompilerIdCXX.vcxproj
的项目而失败,并显示以下错误:
C1083: Cannot open source file: 'CMakeCXXCompilerId.cpp'
因为文件路径的长度例如
C:\Users\spenc\Desktop\...\MyProjectDirectory\build\CMakeFiles\...\CMakeCXXCompilerId.cpp
超出了MAX_PATH限制。
CMake然后得出结论,没有CXX编译器。
答案 7 :(得分:3)
这适用于我Ubuntu 17.10(Artful Aardvark):
apt-get update
apt-get install build-essential
答案 8 :(得分:2)
确保选择了正确版本的Visual Studio。这比看起来更棘手,因为Visual Studio 2015实际上是Visual Studio 14,同样Visual Studio 2012也是Visual Studio 11.我错误地选择了Visual Studio 15,这实际上是Visual Studio 2017,当我安装2015时。
答案 9 :(得分:1)
这里的解决方案都没有解决我的问题 - 只有在我为通用C运行时安装Windows Update时才会解决。
现在,CMake正在运行,不再有来自Visual Studio的链接。
答案 10 :(得分:1)
您还可以确保您是sudo用户,并且您对正在使用的目录具有READ / WRITE访问权限。我在OS X上遇到了类似的问题,我只是通过进入sudo模式就解决了这个问题。
答案 11 :(得分:1)
以防万一将来对像我这样的人有帮助:
在3台不同的64位计算机(Win7,Windows 8.1 VM和WIn 8.1笔记本电脑)上,我已经有24小时的问题了,同时尝试使用VS 2017构建WebKit。
这里的简单问题是CMake对VC ++编译器(即cl.exe及其从属DLL)不可见。简单。通过使包含这些二进制文件的VC ++文件夹对CMake和工作的命令提示符(如果从命令提示符运行Cmake)可见,瞧! (除了其他人提出的要点之外,
无论如何,经过各种修复(在许多论坛上发布的)后,我发现确保PATH变量的内容不会被多个Visual Studio BIN路径等弄乱是很简单的。而是指向:
a)编译器的位置(例如,Visual Studio的首选版本为 cl.exe ),在我的情况下(针对64位平台,并在64位主机上进行开发) )是: C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Community \ VC \ Tools \ MSVC \ 14.15.26726 \ bin \ Hostx64 \ x64
b),此外,该文件夹包含一个名为dll(cl.exe依赖于此)的依赖DLL: api-ms-win-crt-runtime-l1-1-0.dll -在我的计算机上为:
C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Community \ Common7 \ IDE \ Remote Debugger \ x64
将这两个目录添加到简化的CUSTOM系统路径变量(在Admin特权命令提示符下工作),消除了我的“找不到CMAKE_C_COMPILER”和“找不到CMAKE_CXX_COMPILER”。错误。
希望它可以帮助某人。
答案 12 :(得分:1)
使用ccache时,如果启用了CMake's Xcode generator,我将得到确切的报告错误。禁用ccache对我来说解决了这个问题。下面,我介绍了一个适用于MacOS的修复程序/检查程序,但在其他平台上也应类似地工作。
很显然,也可以将CMake的Xcode生成器(及其他)与ccache结合使用,如here所述。但是我从来没有亲自尝试过。
# 1) To check if ccache is enabled:
echo $CC
echo $CXX
# This prints something like the following:
# ccache clang -Qunused-arguments -fcolor-diagnostics.
# CC or CXX are typically set in the `.bashrc` or `.zshrc` file.
# 2) To disable ccache, use the following:
CC=clang
CXX=clang++
# 3) Then regenerate the cmake project
cmake -G Xcode <path/to/CMakeLists.txt>
答案 13 :(得分:0)
我将Visual Studio 2015更新2更新到Visual Studio 2015更新3,它解决了我的问题。
答案 14 :(得分:0)
我遇到了与cmake-gui(No CMAKE_CXX_COMPILER could be found.
)相同的问题,而从命令行运行CMake工作正常。手动添加条目后
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin
到它为我工作的PATH环境变量。
答案 15 :(得分:0)
对我来说,它可以使用Visual Studio随附的开发人员命令提示符,然后从cd
到your/jcef/dir
并运行cmake -G "Visual Studio 14 Win64" ..
答案 16 :(得分:0)
我遇到了同样的问题。
我试图在我的机器上安装dlib,这给了我这个错误。 问题中提到的教程导致下载Visual Studio2017。我通过卸载VS 2017和安装VS 2015来解决了这个问题。
一个人可以通过以下stackoverflow线程安装VS 2015: How to download Visual Studio Community Edition 2015 (not 2017)
答案 17 :(得分:0)
我知道这个问题与Visual Studio 2015有关。我在Visual Studio 2017中遇到了这个问题。在Google上搜索时,我登陆了此页面。看完第一个2,3个答案后,我意识到这是vc ++安装的问题。安装工作负载“使用c ++进行桌面开发”解决了该问题。
答案 18 :(得分:0)
如果找到ARM,请查看Cmakelists.txt,您需要为ARM安装C ++
这些程序包:
“不需要”用于ARM64的C ++通用Windows平台
“不需要”的ARM的Visual C ++编译器和库
“非常可能需要” ARM64的Visual C ++编译器和库
DOCTYPE
然后是问题
找不到CMAKE_C_COMPILER。
找不到CMAKE_CXX_COMPILER。
除非您指定clang之类的c编译器,否则它可能会消失,并且安装clang可能会有所帮助。
如果您不针对ARM进行编译,则可以在enable_language之前使用#将cmakelists.txt中的可选remove与#一起删除。
答案 19 :(得分:0)
在没有运气的情况下尝试了所有解决方案后,我只是通过 cmake -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ ...