我正在尝试使用 CMake 制作 Visual Studio 解决方案来编译最新版本的 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
原文由 Caio Fontes 发布,翻译遵循 CC BY-SA 4.0 许可协议
那些错误信息
或者
只是意味着 CMake 无法找到您的 C/CXX 编译器来编译一个简单的测试程序(CMake 在检测您的构建环境时尝试的第一件事)。
查找问题的步骤取决于您要生成的构建环境。以下教程是 Stack Overflow 上的答案集合,以及我自己在 Microsoft Windows 7/8/10 和 Ubuntu 14.04 上使用 CMake 的一些经验。
前提条件
您已经安装了编译器/IDE,并且它能够编译任何其他程序(直接没有 CMake)
您拥有最新的 CMake 版本
您对希望 CMake 生成构建环境的驱动器具有访问权限
您有一个干净的构建目录(因为 CMake 确实缓存了上次尝试的内容),例如作为源树的子目录
Windows cmd.exe
bash 外壳
并确保您的命令外壳指向您新创建的二进制输出目录。
您可以/应该尝试的一般事情
如果它正确地确定了要使用的生成器,那就完美了——就像这里
Visual Studio 14 2015
在之前的构建输出目录中,查看
CMakeFiles\CMakeError.log
是否有任何对您有意义的错误消息,或者尝试打开/编译在CMakeFiles\[Version]\CompilerIdC
|CompilerIdCXX
直接从命令行(在错误日志中找到)。CMake 找不到 Visual Studio
_背景_:CMake 支持所有 Visual Studio 版本和风格(Express、Community、Professional、Premium、Test、Team、Enterprise、Ultimate 等)。为了确定编译器的位置,它使用搜索注册表(例如在
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\[Version];InstallDir
)、系统环境变量和 - 如果没有其他人确实想出一些东西 - 显然尝试调用编译器。CMake 找不到 GCC (MinGW/MSys)
msys.bat
启动 MSysbash
shell,然后尝试直接调用gcc
在这里它确实找到了
gcc
并抱怨我没有给它任何参数。所以以下应该工作:
如果未找到 GCC,请调用
export PATH=...
添加您的编译器路径(请参阅 如何在 CMake 脚本中设置 PATH 环境变量? ),然后重试。CXX
编译器路径(路径可能不同)有关更多详细信息,请参阅 如何为 CMake 指定新的 GCC 路径
注意:使用“MinGW Makefiles”生成器时,您必须使用
mingw32-make
与 MinGW 一起分发的程序否则 CMake 的最后手段是不尝试任何编译器搜索本身并直接设置 CMake 的内部变量
有关更多详细信息,请参阅 Cmake 不尊重 -D CMAKE_CXX_COMPILER=g++_ 和 _Cmake 错误设置编译器
或者,这些变量也可以通过
cmake-gui.exe
在 Windows 上进行设置。请参阅 Cmake 找不到编译器_背景_:与 Visual Studio 大致相同。 CMake 支持各种 GCC 风格。它搜索环境变量(CC、CXX 等)或只是尝试调用编译器。此外,它会检测任何前缀( 交叉编译 时)并尝试将其添加到 GNU 编译器工具链的所有 binutils 中(
ar
,ranlib
,strip
,ld
,nm
,objdump
和objcopy
)。