我在 Mac 上安装了自制软件。 brew --env 输出如下:
HOMEBREW_CC: clang
HOMEBREW_CXX: clang++
MAKEFLAGS: -j8
CMAKE_PREFIX_PATH: /usr/local
CMAKE_INCLUDE_PATH: /Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/System/Library/Frameworks/OpenGL.framework/Versions/Current/Headers
CMAKE_LIBRARY_PATH: /Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/System/Library/Frameworks/OpenGL.framework/Versions/Current/Libraries
PKG_CONFIG_LIBDIR: /usr/lib/pkgconfig:/usr/local/Homebrew/Library/Homebrew/os/mac/pkgconfig/11
HOMEBREW_GIT: git
HOMEBREW_SDKROOT: /Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk
PATH: /usr/local/Homebrew/Library/Homebrew/shims/mac/super:/usr/bin:/bin:/usr/sbin:/sbin
您可以看到 CMAKE_INCLUDE_PATH 指向 .../OpenGL.framework
这会破坏任何自制程序的安装,因为 OpenGL.framework 没有 math.h 例如。
有什么办法可以改变hombrew CMAKE_环境吗?
到目前为止我已经尝试重新安装 XCode 和 XCode Command Line。删除并安装回自制软件,包括所有地窖......
谢谢!
[更新]
在寻找解决方案时,发现了/usr/local/Homebrew/Library/Homebrew/extend/ENV名称确定_cmake_include_path下的文件super.rb中的函数,该函数正在为其自身设置这些CMAKE env:
sig { returns(T.nilable(PATH)) }
def determine_cmake_include_path
PATH.new(homebrew_extra_cmake_include_paths).existing
end
因为这不是我的“深入知识”的主题:)如果有人能说明那里发生的事情......而我仍在寻找解决方案......
我有一个潜在的解决方法可以建议,但可以肯定的是,您需要通过包含
brew install
您执行的命令的详细日志来增强问题的描述,使其更易于调试。您可以获取此信息通过在 Homebrew 安装命令中使用 --verbose
标志:
```bash
brew install {library} --verbose
```
根据您提到的文件
math.h
以及您的 HOMEBREW_SDKROOT
设置为 MacOS11.sdk
,看来该问题可能与 CMAKE_INCLUDE_PATH
无关,因为它仅用作附加搜索列表CMake 包含标头的目录。相反,这可能与我遇到的问题相同:由于 cmath
文件中对 macOS SDK 中的 C++ 标头 math.h
的引用不正确,导致库编译期间出现问题。
我最近在 Medium 上发表了一篇文章,其中提供了解决方法: https://medium.com/@dutrevis/fixing-c-compilation-errors-in-homebrew-on-macos-11-big-sur-0417478c1ae5
在应用解决方案之前,将您的日志与我执行的调试进行比较,以确认这是否确实是您的问题。总之,如果是这种情况,您可能需要编辑 macOS SDK 的
cmath
文件,通过将 macOS SDK 路径附加到其 math.h
来显式包含正确的 #include <math.h>
。这可以通过以下命令来完成:
sudo sed -i '' 's/#include <math\.h>/#include \<\/Library\/Developer\/CommandLineTools\/SDKs\/MacOSX11\.sdk\/usr\/include\/c\+\+\/v1\/math\.h\>/' /Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/usr/include/c++/v1/cmath
请注意,此解决方案假设您使用的是 macOS 11 SDK 版本和 Xcode 命令行工具 未安装 XCode 应用程序。
希望这有帮助! :)