Homebrew ENV CMAKE 默认设置为 OpenGL Framework。怎么改?

问题描述 投票:0回答:1

我在 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

因为这不是我的“深入知识”的主题:)如果有人能说明那里发生的事情......而我仍在寻找解决方案......

cmake environment-variables homebrew
1个回答
0
投票

我有一个潜在的解决方法可以建议,但可以肯定的是,您需要通过包含

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 应用程序

希望这有帮助! :)

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.