使用 GCC 和 Clang 构建媒体管道失败

Building mediapipe fails with both GCC and Clang

我正在尝试用 C++ 构建 Mediapipe 的 Hello World 示例。这些是我在 .bash_profile:

中的导出
export PATH=$PATH:$(go env GOPATH)/bin
export GLOG_logtostderr=1
export CC=/usr/bin/clang
export CXX=/usr/bin/clang++
#export CC=/usr/bin/gcc
#export CXX=/usr/bin/g++
export BAZEL_CXXOPTS="-std=gnu++17"

然后我运行这个,按照说明:

bazelisk run --copt -DMESA_EGL_NO_X11_HEADERS --copt -DEGL_NO_X11 --sandbox_writable_path ~/.ccache --sandbox_debug --verbose_failures mediapipe/examples/desktop/hello_world:hello_world

结果是“全局命名空间中没有名为 'max' 的成员”错误:

if (x->version == std::numeric_limits<uint32_t>::max()) {

我只使用了 Clang,因为 GCC11 改变了它现在不包含 <limits> 的方式,因此 CC/CXX 变量设置为 gcc/g++,它给出了“' ::max' 尚未声明;您是说 std::max 吗?”错误... Clang 是否进行了类似的更改?我在 Fedora 上,我无法访问旧的 GCC10。

mediapipe 依赖旧版本 abseil c++ that does not include a commit necessary to work on newer libstdc++ versions. So, com_google_absl in the mediapipe WORKSPACE 需要更新。