我无法安装 ffmpegs(依赖项) - doxygen 错误 [mac 10.12.6 Sierra]



它安装了使ffmpeg运行所需的大约70%的依赖项,但在安装"doxygen"时遇到了困难。

这是我得到的错误:

==> Installing dependencies for ffmpeg: doxygen, little-cms2, openjpeg, opus, rust, libgit2, cargo-c, rav1e, flac, libsndfile, libsamplerate, rubberband, sdl2, swig, llvm, snappy, speex, srt, leptonica, libb2, lz4, libarchive, tesseract, theora, x264, x265, xvid, docbook, boost, source-highlight, asciidoc, docbook-xsl, libyaml, ruby, asciidoctor, gnu-getopt, xmlto, libsodium, zeromq and zimg
==> Installing ffmpeg dependency: doxygen
==> cmake ..
==> make
Last 15 lines from /Users/macbook/Library/Logs/Homebrew/doxygen/02.make:
In file included from /tmp/doxygen-20220723-61533-5m5mdv/doxygen-1.9.4/src/outputlist.h:25:
/tmp/doxygen-20220723-61533-5m5mdv/doxygen-1.9.4/src/searchindex.h:29:10: fatal error: 'variant' file not found
#include <variant>
         ^~~~~~~~~
1 error generated.
make[2]: *** [src/CMakeFiles/doxymain.dir/__/generated_src/code.cpp.o] Error 1
make[1]: *** [src/CMakeFiles/doxymain.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 46%] Linking CXX static library ../lib/libvhdlparser.a
cd /tmp/doxygen-20220723-61533-5m5mdv/doxygen-1.9.4/build/vhdlparser && /usr/local/Cellar/cmake/3.23.2/bin/cmake -P CMakeFiles/vhdlparser.dir/cmake_clean_target.cmake
cd /tmp/doxygen-20220723-61533-5m5mdv/doxygen-1.9.4/build/vhdlparser && /usr/local/Cellar/cmake/3.23.2/bin/cmake -E cmake_link_script CMakeFiles/vhdlparser.dir/link.txt --verbose=1
/usr/bin/ar qc ../lib/libvhdlparser.a CMakeFiles/vhdlparser.dir/CharStream.cc.o CMakeFiles/vhdlparser.dir/ParseException.cc.o CMakeFiles/vhdlparser.dir/Token.cc.o CMakeFiles/vhdlparser.dir/TokenMgrError.cc.o CMakeFiles/vhdlparser.dir/__/generated_src/VhdlParser_adj.cc.o CMakeFiles/vhdlparser.dir/VhdlParserTokenManager.cc.o
/usr/bin/ranlib ../lib/libvhdlparser.a
[ 46%] Built target vhdlparser
make: *** [all] Error 2
Do not report this issue to Homebrew/brew or Homebrew/core!

Error: You are using macOS 10.12.
We (and Apple) do not provide support for this old version.
You will encounter build failures with some formulae.
Please create pull requests instead of asking for help on Homebrew's GitHub,
Twitter or any other official channels. You are responsible for resolving
any issues you experience while you are running this
old version.

有人能帮我吗?我不确定这是什么,我应该做什么。

看起来我们在同一条船上。与";打得好";,事实上。我们可能都应该求助于linux甚至windows,因为天知道他们会一直让我们很难…

然而,可能和你自己一样,惯性和";正当理由";让我们坚持到底;(

基本上,其他人在这里正确地描述了这个问题(缺乏c++17支持(,在我的情况下(可能还有你的情况(,是因为gcc是clang的符号链接(如果你使用的是与我们的操作系统兼容的最新版本,则为9.0(

告诉brew使用真正的gcc(我假设你已经编译过了,如果没有的话,那么gcc 11.3.0无论如何都是ffmpeg的依赖项,所以继续构建它;brew安装gcc(可以这样做:

HOMEBREW_CC=gcc-11 HOMEBREW_CXX=g++-11 brew install doxygen

然而,以上内容对我来说并不奏效,因为尽管它解决了c++17问题,但它暴露了另一个问题:(

似乎出于某种原因,macos的最低版本号搞砸了(我认为是因为10.13的sdk头安装了与我们的操作系统兼容的最新版本的xcode(,所以编译失败了。尽管几乎可以肯定有更好/更干净的方法来处理这个问题,但我通过在编辑代码后手动编译和安装doxygen来解决这个问题。

在第4491行附近的doxygen/filesystem/filessystem.hpp文件中,您需要更改行

#if __MAC_OS_X_VERSION_MIN_REQUIRED < 101300

#if __MAC_OS_X_VERSION_MIN_REQUIRED < 111400

然后编译doxygen(从brew缓存中提取源代码(,cd到cmake文件夹,然后运行

cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/Cellar/doxygen/1.9.4 -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release -DCMAKE_FIND_FRAMEWORK=LAST -DCMAKE_VERBOSE_MAKEFILE=ON -Wno-dev -DBUILD_TESTING=OFF -DCMAKE_C_COMPILER=gcc-11 -DCMAKE_CXX_COMPILER=g++-11
make
make install
brew link doxygen

然后继续brew安装ffmpeg。我在使用nettle时也遇到了问题,需要手动编译和安装它,因为与macos(libressl(打包的libcrypto版本不兼容。我必须按照";酿造信息openssl@1.1"为了确保编译器使用兼容的openssl-libcrypto,我不知道如何让brew为我做这件事。

有趣有趣。我不太希望汇编的其余部分不会出现问题,但现在它又开始慢慢消失了。我有一种明显的印象,那就是这太不值得麻烦了。

祝你好运!

**编辑**

我仍在艰难地度过,这需要很长时间。但随着我遇到更多的问题,我会尝试在这里详细说明,希望我遇到的每一个问题都很容易克服。

  1. llvm编译失败,有很多缺少的头错误。指导brew使用gcc-11,就像我对doxygen所做的那样,努力进一步编译它(27%(,但仍然失败了(看起来是因为它正在调用clang特定的选项,这是brew-cmake配置传递给它的结果……我仍在做这个……(

结论-我放弃了。在我看来,这不值得花时间。

相反,我安装了macports;sudo端口安装ffmpeg上行";安装ffmpeg-5。除非你有一些迫切需要自己编译,否则我建议你也这样做。

我也花了相当长的时间来解决这个问题,最终我找到了另一个解决方案。我只是根据自己的需要编辑了公式:

brew edit doxygen

一旦到了那里;def install";块然后编辑文件,使其看起来像这样:

fails_with :clang
def install
  inreplace "CMakeLists.txt", "MACOS_VERSION_MIN 10.14", "MACOS_VERSION_MIN 10.11"

保存,退出。简而言之,只需添加";fails_ with";行和";inreplace";线第一个导致brew不使用clang(所以您需要在某个地方有一个gcc副本(。这是为了解决C++17问题。第二个修补了CMakeLists.txt文件,允许cmake发挥其魔力。一旦完成;brew install doxygen";应该成功。

最新更新