CMake错误:在使用Xcode和GLFW时找不到CMAKE_C_COMPILER

39
我正试图按照这个教程开始学习OpenGL:http://www.learnopengl.com/#!Getting-started/Creating-a-window,它需要下载glfw和CMake。我已将下载的glfw文件夹设置为源代码文件夹,并在该文件夹内创建了一个名为“build”的文件夹,然后将其设置为二进制文件的构建目录,就像教程中要求的那样。我点击“Configure”并选择XCode作为生成器,因为我在Mac上。问题是当我尝试配置项目时,CMake给我返回了以下错误信息:
The C compiler identification is unknown
CMake Error at CMakeLists.txt:3 (project):
  No CMAKE_C_COMPILER could be found.

Configuring incomplete, errors occurred!
See also "/Users/standard/Desktop/glfw-3.2.1/build/CMakeFiles/CMakeOutput.log".
See also "/Users/standard/Desktop/glfw-3.2.1/build/CMakeFiles/CMakeError.log".

我已经阅读了这个问题,但就我所理解的而言,它并没有我需要的东西:CMakeLists.txt:30处出现CMake错误:找不到CMAKE_C_COMPILER


这个回答解决了你的问题吗?远程系统没有安装CMake 3.8或更高版本 - BDisp
14个回答

139
如果您已经安装了 XcodeCommand Line Tools for Xcode,请尝试以下操作:
sudo xcode-select --reset

17
你能解释一下这个答案吗? - sam1370
2
@Sam1370 通过安装命令行开发工具和macOS SDK框架及头文件,Xcode命令行工具使得可以通过终端进行类UNIX式的开发。其中包括了许多有用的工具,例如Apple LLVM编译器、链接器和Make等。 - hstdt
谢谢!这对我来说似乎有效,但我也清理了我的构建目录,所以那可能也有帮助。 - Evan Murray
1
即使完全清理构建目录,这也解决了我的问题。 - Mark Langen
很遗憾对我没有帮助。 - oarfish
很遗憾,对我没有帮助。 - undefined

31

在我安装Homebrew之后,使用Xcode10 / Cmake 3.12时发生了这种情况。 运行sudo xcode-select --reset解决了我的问题。


29

你是否安装了Xcode和Xcode命令行工具?

xcode-select --install
如果您已经安装了Xcode命令行工具,那么您不应再收到“xcrun未找到”错误信息。
您是如何安装Cmake的?一旦确保安装了Xcode命令行工具,请彻底从系统中删除Cmake并重新安装。您的配置出问题了。虽然有办法进行调试和修复,而不需要进行干净的安装,但由于您对此还很陌生,这将是最简单和最不令人沮丧的方法。
如果以上步骤失败,如果您已经安装了Xcode命令行工具,hstdt建议尝试以下内容:
sudo xcode-select --reset

我按照您说的做了,我能够生成项目!所以,谢谢你。现在我发现了一个新问题,基本上在我的构建文件夹中,我找不到XCode的/lib和/include文件夹,这是教程所要求的。另外,我的格式也不同,但我猜这取决于IDE(教程使用的是Visual Studio)。您有关于文件夹问题的任何想法吗? - Jules
在基于Unix的操作系统上,事情有点不同。可以考虑/lib和/include这三个位置:/usr/{lib|include}/ <- 系统库所在地 /usr/local/{lib|include}/ <- “用户空间”库所在地 /opt/{lib|include}/ <- 杂项库所在地对于您的目的,它们应该放在/usr/local/中。此问题告诉您如何为Mac构建和安装glfw:https://dev59.com/questions/U2Ag5IYBdhLWcg3wjrkZ - Cinder Biscuits
1
{btsdaf} - lukas.pukenis
{btsdaf} - Michael Bishop
安装命令行工具并运行“--reset”后,我不得不重新安装CMake才能找到它们。 - Tim MB

27

这个错误意味着 CMake 找不到您的标准 C/C++ 编译器,看起来您需要自己导出环境变量。您可以使用以下命令找到 C/C++ 编译器的路径:

xcrun -find c++
xcrun -find cc

然后在获取路径之后,在 gui 内创建两个变量。如果你是从 cline 运行它,那么应该像这样:

然后在获取路径之后,在 gui 中创建两个变量。如果您是从命令行运行它,则应类似于:

cmake -D CMAKE_C_COMPILER="/path/to/your/c/compiler/executable" -D CMAKE_CXX_COMPILER="/path/to/your/cpp/compiler/executable" ...

在终端中运行这些命令时,我收到了以下错误信息:xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun。我按照您的建议正确执行了吗?抱歉,我真的很新手。 - Jules
我无法仅编辑一个字符,第二个-D后面缺少等号。 - Cinn
1
非常有帮助,适用于我 - NamNamNam
1
不错的解决方案。一种干净利落的方法是使用反引号来完成这一行代码: " -DCMAKE_C_COMPILER=`xcrun -find cc` -DCMAKE_CXX_COMPILER=`xcrun -find c++`"。我很惊讶cmake在Mac上如此不稳定,以至于它自己不能完成这个任务。 - user3690202
对我来说完美地工作了!很棒的解决方案。而且随着@user3690202的建议,它变得更好了。 - Renato Rodrigues

19

如果您使用的是 Mac 计算机且已安装 Homebrew,则可以通过升级 cmake 并强制重新配置编译器来完成升级:

brew upgrade cmake

14

在新的Xcode安装中,命令行工具会抱怨同意使用构建工具不喜欢的最终用户许可协议(EULA)。你可以通过以下方式来同意:

sudo xcodebuild -license

2
我已经安装了Xcode,但从未接受过许可协议。sudo xcodebuild -license accept 对我起了作用。 - greatblueherron

6

对于现在从谷歌搜索进入这个问题的任何人,我的问题已经通过解决了。

xcodebuild -runFirstLaunch

我通过检查 CMakeFiles/CMakeError.log 找到了这个问题。


4

在我的情况下,我需要从CMake官方网站下载.dmg文件并安装CMake,然后将CMake文件夹添加到系统的路径中。

在安装之前,which cmake的输出是/usr/local/bin/cmake
安装后,应该变成类似于/Applications/CMake.app/Contents/bin/cmake这样的路径。

这解决了我的问题。


1
如果我的机器上启用了ccache,我会得到这个错误。禁用ccache可以为我解决问题。
要检查ccache是否启用,请打印系统变量CC或CXX:
echo $CC
echo $CXX

这将打印类似以下内容:ccache clang -Qunused-arguments -fcolor-diagnostics。(通常由.bashrc.zshrc文件覆盖CC或CXX。)

要禁用ccache,请使用以下命令:

CC=clang
CXX=clang++

然后重新构建CMake项目:
cmake -G Xcode <path/to/CMakeLists.txt>

显然,可以将CMake的Xcode生成器与ccache结合使用,如这里所述。不过我自己从未尝试过。


1

当我为CMAKE_OSX_SYSROOT设置了无效的值时,我遇到了这个错误。我试图给它SDK的名称,例如“macOS 10.13”。将其设置为SDK的完整路径解决了此问题。

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接