CMake error no CMAKE_C_COMPILER can be found using Xcode and GLFW
Posted
技术标签:
【中文标题】CMake error no CMAKE_C_COMPILER can be found using Xcode and GLFW【英文标题】:CMake error no CMAKE_C_COMPILER could be found using Xcode and GLFW 【发布时间】:2017-05-13 20:23:18 【问题描述】:我正在尝试按照本教程开始使用 OpenGL:http://www.learnopengl.com/#!Getting-started/Creating-a-window,它需要下载 glfw 和 CMake。 我已将下载的 glfw 文件夹设置为源代码文件夹,并在该文件夹中创建了另一个名为“build”的文件夹,然后按照教程的要求将其设置为二进制文件的构建文件夹。 我单击“配置”并选择 XCode 作为生成器,因为我在 Mac 上。 问题是当我尝试配置项目时,CMake 给了我这个错误:
C 编译器标识未知 CMakeLists.txt:3(项目)处的 CMake 错误: 找不到 CMAKE_C_COMPILER。
配置不完整,出现错误! 也可以看看 “/Users/standard/Desktop/glfw-3.2.1/build/CMakeFiles/CMakeOutput.log”。
另请参阅 “/Users/standard/Desktop/glfw-3.2.1/build/CMakeFiles/CMakeError.log”。
我已经阅读了这个问题,但据我所知,它没有我需要的东西: CMake Error at CMakeLists.txt:30 (project): No CMAKE_C_COMPILER could be found
谢谢。
【问题讨论】:
【参考方案1】:如果你已经安装了Xcode
或Command Line Tools for Xcode
,试试这个:
sudo xcode-select --reset
【讨论】:
你能解释一下这个答案吗? @Sam1370 Xcode 命令行工具通过安装命令行开发工具以及 macOS SDK 框架和头文件,通过终端实现 UNIX 风格的开发。包括许多有用的工具,例如 Apple LLVM 编译器、链接器和 Make。 谢谢!这似乎对我有用,但我也清理了我的构建目录,所以这可能也有帮助。 即使有一个完全干净的构建目录也不会解决这个问题。【参考方案2】:安装 Homebrew 后,我使用 Xcode10 / Cmake 3.12 发生了这种情况。运行 sudo xcode-select --reset
为我修复了它。
【讨论】:
【参考方案3】:您是否安装了 Xcode 和 Xcode 命令行工具?
xcode-select --install
如果您安装了 Xcode 命令行工具,您应该不会再收到 xcrun
is missing 错误。
你是如何安装 Cmake 的?确保安装了 Xcode 命令行工具后,请从系统中完全删除 Cmake 并重新安装。你有一个搞砸的配置。有一些方法可以在不全新安装的情况下调试和修复它,但由于您是新手,这将是最简单且最不令人沮丧的方法。
如果您确实安装了 Xcode 命令行工具,则 hstdt 建议您尝试以下操作:
sudo xcode-select --reset
【讨论】:
我按照你说的做了,我可以生成项目了!所以谢谢。现在我发现了一个新问题,基本上在我的构建文件夹中我找不到 XCode 的 /lib 和 /include 文件夹,因为 tuorial 需要。另外我的格式不同,但我猜这取决于 IDE(本教程使用 Visual Studio)。您对文件夹问题有任何想法吗? 在基于 Unix 的操作系统上的工作方式略有不同。可以考虑 /lib 和 /include 的三个位置: /usr/lib|include/ ***.com/questions/23450334/… @hstdt 您的解决方案有帮助,将其作为答案发布 @hstdt 我同意这一点。你的解决方案让我摆脱了束缚。 安装命令行工具并运行--reset
后,我必须重新安装CMake才能找到它们。【参考方案4】:
这个错误意味着 CMake 找不到你的标准 C/C++ 编译器,看起来你需要自己导出环境变量。您可以通过以下方式找到 C/C++ 编译器的路径:
xcrun -find c++
xcrun -find cc
然后,当您拥有路径后,在 gui 中创建两个变量。如果你是从 cline 运行它,它会是这样的
cmake -D CMAKE_C_COMPILER="/path/to/your/c/compiler/executable" -D CMAKE_CXX_COMPILER="/path/to/your/cpp/compiler/executable" ...
【讨论】:
在终端中运行这些命令给我这个错误:xcrun:错误:无效的活动开发者路径(/Library/Developer/CommandLineTools),缺少xcrun:/Library/Developer/CommandLineTools/usr/bin /xcrun。我是否按照您建议的正确方式进行操作?抱歉,我真的很陌生。 我不能只编辑一个字符,第二个 -D 后有一个缺失的等号 非常有帮助,为我工作``` cmake -D CMAKE_C_COMPILER="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc" -D CMAKE_CXX_COMPILER= “/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++”..``` 不错的解决方案。在一行中执行此操作的一种简洁方法是使用反引号:“ -DCMAKE_C_COMPILER=`xcrun -find cc` -DCMAKE_CXX_COMPILER=`xcrun -find c++`”。我很惊讶 cmake 在 mac 上如此糟糕,以至于它自己无法做到这一点。 非常适合我!很好的解决方案。有了@user3690202 建议,它会变得更好【参考方案5】:在全新的 Xcode 安装中,命令行工具抱怨同意 EULA,哪些构建工具不喜欢。你可以做什么:
sudo xcodebuild -license
【讨论】:
我安装了 xcode,但从未接受过许可。sudo xcodebuild -license accept
为我工作【参考方案6】:
如果你在 Mac 电脑上并且有 Homebrew,你可以简单地升级 cmake,强制重新配置编译器:
brew upgrade cmake
【讨论】:
【参考方案7】:就我而言,我需要从 CMake official site 安装 CMake,下载 .dmg,安装它,然后将 CMake 文件夹添加到系统的 PATH 中。
安装前which cmake
的输出为/usr/local/bin/cmake
。
安装后应该是/Applications/CMake.app/Contents/bin/cmake
。
这已经为我解决了这个问题。
【讨论】:
【参考方案8】:如果在我的机器上启用了ccache,我会得到这个错误。禁用 ccache 为我解决了这个问题。
要检查是否启用了 ccache,请打印系统变量 CC 或 CXX:
echo $CC
echo $CXX
这将打印如下内容:ccache clang -Qunused-arguments -fcolor-diagnostics
。 (CC 或 CXX 通常被 .bashrc
或 .zshrc
文件覆盖。)
要禁用 ccache,请使用以下命令:
CC=clang
CXX=clang++
然后重建cmake项目:
cmake -G Xcode <path/to/CMakeLists.txt>
显然,也可以将 CMake 的 Xcode 生成器与 ccache 结合使用,如 here 所述。但我自己从未尝试过。
【讨论】:
【参考方案9】:Xcode 10 和更早版本的 CMake 似乎破坏了编译器检测。我知道 CMake 2.2 对我来说很糟糕,升级到最新版本 (2.13) 为我解决了这个问题。它在 Xcode 9 上运行良好,但升级失败了。我尝试了其他解决方案(根据您的情况都很好),但升级 CMake 解决了这个问题。
【讨论】:
【参考方案10】:如果您使用 CLion 并遇到此问题,请尝试将 Toolchains 设置中的 C 和 C++ 编译器位置更改为最新位置。默认的GCC安装目录是/usr/local/Cellar/gcc/...
【讨论】:
【参考方案11】:当我为 CMAKE_OSX_SYSROOT
设置了无效值时,我收到了这个错误。我试图给它起 SDK 的名称,例如“macOS 10.13”。将其设置为 SDK 的完整路径可解决此问题。
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk
【讨论】:
以上是关于CMake error no CMAKE_C_COMPILER can be found using Xcode and GLFW的主要内容,如果未能解决你的问题,请参考以下文章
linux cmake error no version information available
CMake error no CMAKE_C_COMPILER can be found using Xcode and GLFW
[opencv3.2cmake error ] sys/videoio.h no such file or directories
cmake ninja: error: 'xxx', needed by 'xxx', missing and no known rule to make it
Ubuntu 18.04下Cmake指定OpenCV版本编译(针对问题:fatal error: opencv2/xfeatures2d.hpp: No such file or directory)