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

mnemlml8  于 2022-11-11  发布在  Mac
关注(0)|答案(2)|浏览(232)

它安装了大约70%的依赖项,它需要让ffmpegs去,但它卡住了安装'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.

有没有人能帮我,我不知道这是什么,我应该做的。

hyrbngr7

hyrbngr71#

看起来我们是在同一条船上。打“好仗”,因为它是。我们可能都应该只是保释到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来解决这个问题。
在doxygen/filesystem/filesystem.hpp文件的第4491行附近,您需要更改以下行


# 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打包的libcrypto版本(libressl)不兼容。我不得不按照“brew info openssl@1.1”中所示的步骤来确保编译器使用的openssl libcrypto是兼容的,但我不知道如何让brew为我做这件事。
有趣,有趣,有趣。我不是所有的希望,其余的汇编将去没有问题,但它是chugging离开现在再次。我得到的明显印象是,这是如此不值得的麻烦/麻烦。
祝你好运!

编辑

我还在努力克服它,这需要很长的时间。但是当我遇到更多的问题时,我会尝试在这里详细描述它们,希望我遇到的每个问题都能很容易地克服。

  1. llvm编译失败,有很多缺少头文件的错误。指导brew使用gcc-11,就像我对doxygen所做的那样,可以进一步编译它(27%),但仍然失败(看起来是因为它调用了clang特定的选项,作为brew cmake配置传递给它的结果...我还在处理这个...)
    结论-我放弃了。在我看来,这不值得花时间。
    相反,我安装了macports,并使用“sudo port install ffmpeg-upstream”来安装ffmpeg-5。除非你有一些迫切的需要自己编译,否则我建议你也这样做。
whhtz7ly

whhtz7ly2#

我也花了不少时间来解决这个问题,最后我得到了另一个解决方案。我只是修改了公式,以满足我的需要:

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”应该会成功。

相关问题