在 XCode 9.4.1 中将 GCC 从 4.2.1 更新,其余部分保持不变

在 XCode 9.4.1 中将 GCC 从 4.2.1 更新,其余部分保持不变

我正在尝试构建 LibreOffice,其指南指出我必须使用 XCode 9.4.1,如下所示:

注意:如果您尝试在 macOS Mojave 10.14 上构建 LibreOffice,请使用 Xcode 9.4.1,否则,由于 Xcode 10 的问题(tdf#121778),LibreOffice 将变得非常不稳定。

但是我在安装过程中遇到了一个错误:

...
-- Check for working CXX compiler: /Applications/Xcode-9.4.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++
-- Check for working CXX compiler: /Applications/Xcode-9.4.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -- works
...
-- Checking if compiler supports C++ unique_ptr
-- Checking if compiler supports C++ unique_ptr - no
CMake Error at CMakeLists.txt:79 (message):
  The C++ compiler does not support C++11 (e.g.  std::unique_ptr).


-- Configuring incomplete, errors occurred!
See also "/Users/xxxx/Documents/workspace/lode/packages/cmake-3.10.0-rc3/CMakeFiles/CMakeOutput.log".
See also "/Users/xxxx/Documents/workspace/lode/packages/cmake-3.10.0-rc3/CMakeFiles/CMakeError.log".
...

正如错误中所述,这确实是因为当我尝试直接运行 gcc 时,默认情况下它不支持 C++11。但设置开关-std=c++11有效。但问题是我无法放置开关标志,因为我需要它是默认值。

我寻找如何更改默认值的方法。后来我发现 XCode bin 中的 gcc 是 4.2.1 版本,通过引用

默认情况下,没有一个版本的 gcc 完全符合任何 ANSI 或 ISO C 标准。默认值始终等同于 -std=gnuNN,支持给定标准和 GNU 特定的扩展。在版本 5 之前(以及几年前),默认值为 -std=gnu90。从版本 5 开始,默认值为 -std=gnu11。

来自https://stackoverflow.com/questions/7458340/how-to-find-out-which-ansi-c-standard-my-gcc-works-with-by-default 可能是为什么 gcc 默认使用 c++98 而不是 c++11(在所有脚本中使用)的原因.sh

我不确定如何更新 gcc,似乎我不能直接复制并粘贴来自其他新 XCode 安装的 gcc 二进制文件,因为它可能与其他二进制文件有依赖关系。有什么办法可以解决这个问题吗?提前致谢!

相关内容