Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

树莓派上的编译运行 #78

Closed
zihanhuang opened this issue Jan 31, 2023 · 37 comments
Closed

树莓派上的编译运行 #78

zihanhuang opened this issue Jan 31, 2023 · 37 comments

Comments

@zihanhuang
Copy link

设备是Raspberry Pi 4,系统为raspbian bullseye 64bit
目前的情况是可以编译,不能运行。

GLFW:可以编译成功,运行时提示不支持OpenGL3.3

SDL2:编译需要修改一处代码。将SDLInputManager::updateMouseWheel()内的
event.preciseX event.preciseY 改为 event.x event.y
之后可以编译通过。程序运行到SDLVideoContext::SDLVideoContext()的nvgCreateGL3()出现segment fault

@xfangfang
Copy link
Owner

@zihanhuang 感谢反馈(应该是提示不支持OpenGL3.2)

我有一个树莓派3b,但是我编译一直在出错,可能是内存不够吧,这个我还得研究研究。

我推荐使用GLFW的方案运行,树莓派貌似支持OpenGL 2.1 所以可能的解决方法是分两步,第一步先让UI可以正常启动,第二步修改播放器的 shader。

第一步我先简单完成了,可以先拉 gl2 分支的代码(注意子模块 borealis分支也应该是 gl2),编译一下看看能不能正常显示窗口。

如果第一步成功了,那么这时候应该只是播放不出来画面,但是其他所有功能都能正常使用。

第二步我在mac上还没完成,貌似是mpv在mac上只支持 OpenGL3.0 以上,这一步应该修改一下播放器的 shader应该就可以了,期待你的PR,我继续研究一下看看怎么在3b上编译。

const char *vertexShaderSource =
"#version 150 core\n"
"in vec3 aPos;\n"
"in vec2 aTexCoord;\n"
"out vec2 TexCoord;\n"
"void main()\n"
"{\n"
" gl_Position = vec4(aPos, 1.0);\n"
" TexCoord = aTexCoord;\n"
"}\0";
const char *fragmentShaderSource =
"#version 150 core\n"
"in vec2 TexCoord;\n"
"out vec4 FragColor;\n"
"uniform sampler2D ourTexture;\n"
"uniform float Alpha = 1.0;\n"
"void main()\n"
"{\n"
" FragColor = texture(ourTexture, TexCoord);\n"
" FragColor.a = Alpha;\n"
"}\n\0";

@zihanhuang
Copy link
Author

zihanhuang commented Jan 31, 2023

主界面可以打开,点击任意一个视频或者设置里切换硬解会挂在mpv
尝试了在MPVCore::init() 关闭硬解,没有变化

[libmpv_render] GL_VERSION='2.1 Mesa 20.3.5'
[libmpv_render] Detected desktop OpenGL 2.1.
[libmpv_render] GL_VENDOR='Broadcom'
[libmpv_render] GL_RENDERER='V3D 4.2'
[libmpv_render] GL_SHADING_LANGUAGE_VERSION='1.20'
[libmpv_render] Loaded extension GL_ARB_map_buffer_range.
[libmpv_render] Loaded extension GL_ARB_framebuffer_object.
[libmpv_render] Loaded extension GL_ARB_vertex_array_object.
[libmpv_render] Loaded extension GL_ARB_texture_rg.
[libmpv_render] Loaded extension GL_ARB_texture_float.
[libmpv_render] Loaded extension GL_ARB_sync.
[libmpv_render] Loaded extension GL_ARB_get_program_binary.
[libmpv_render] Loaded extension GL_ARB_buffer_storage.
[libmpv_render] Loaded extension GL_ARB_shader_image_load_store.
[libmpv_render] Loaded extension GL_ARB_uniform_buffer_object.
[libmpv_render] Loaded extension GL_ARB_shader_storage_buffer_object.
[libmpv_render] Loaded extension GL_ARB_compute_shader.
[libmpv_render] Loaded extension GL_ARB_arrays_of_arrays.
[libmpv_render] Loaded extension GL_ARB_debug_output.
[libmpv_render] GL_*_swap_control extension missing.
[cplayer] Waiting for scripts...
[libmpv_render] Testing FBO format rgba8
[libmpv_render] Using FBO format rgba8.
[libmpv_render] Disabling HDR peak computation (one or more of the following is not supported: compute shaders=0, SSBO=0).
[libmpv_render] No advanced processing required. Enabling dumb mode.
[libmpv_render] Loading hwdec driver 'vaapi-egl'
[libmpv_render/vaapi-egl] VAAPI hwdec only works with OpenGL or Vulkan backends.
[libmpv_render] Loading failed.
[libmpv_render] Loading hwdec driver 'vdpau-gl'
[libmpv_render] Loading failed.
[libmpv_render] Loading hwdec driver 'drmprime-drm'
[libmpv_render/drmprime-drm] Failed to retrieve DRM fd from native display.
[libmpv_render] Loading failed.
21:28:11.573[INFO] MPV Version: mpv 0.32.0
21:28:11.573[INFO] FFMPEG Version: 4.3.5-0+deb11u1+rpt3
段错误

@xfangfang
Copy link
Owner

这个问题我因为没有具体的环境来操作就没办法调试了,3B编译起来太慢,得等哪天我有大段时间来看看的。
有一个小细节是您用的mpv版本不是最新的(当然这个应该也不影响)

前面说的shader应该是需要修改的,shader用的版本是150,对应OpenGL 3.2,如果要支持 OpenGL2.1,shader版本应该是 120,但是除了版本号之外对应的还需要修改哪些内容我倒是不太清楚,这个如果您有时间的话可以琢磨看看。

上手mpv开发的话,可以参考这几个示例:
https://github.com/mpv-player/mpv-examples/tree/master/libmpv
https://github.com/v0idv0id/MPVideoCube

@xfangfang
Copy link
Owner

如果只有硬解存在问题,可以尝试修改看看 硬解的方案。

wiliwili 默认使用 auto-safe,根据文档还有多种方案可选,可以挨个试试:https://mpv.io/manual/stable/#options-hwdec

@zihanhuang
Copy link
Author

好的我也看看。树莓派4编译也很慢,每次编译都要link很久。。

@zihanhuang
Copy link
Author

进一步调试了一下,具体挂在MPVCore::initializeGL() glGenFramebuffers()
查了下open gl2.1不支持framebuffer。
我对GPU不熟悉,不知道怎么改了。。

@xfangfang
Copy link
Owner

感谢反馈,我今晚有空的话研究一下

@xfangfang
Copy link
Owner

xfangfang commented Feb 4, 2023

增加了 OpenGL 2.1 的支持,目前已经可以正常运行在树莓派上

环境

我使用的是树莓派3b 搭配64位 Raspberry Pi OS,可以凑合用但是会卡,日常用应该至少需要4b。

流程

使用默认的x11 (推荐)

  • 安装依赖(前面是 wiliwili 的依赖,后面的是 x11 的依赖)
    sudo apt install libmpv-dev libmbedtls-dev libdbus-1-dev\
      libx11-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev
    
  • 拉取项目
    git clone --recursive https://github.com/xfangfang/wiliwili.git
    
  • 编译
    cd wiliwili
    cmake -B build -DPLATFORM_DESKTOP=ON -DCMAKE_BUILD_TYPE=Release -DGLFW_BUILD_WAYLAND=OFF -DGLFW_BUILD_X11=ON -DUSE_GL2=ON -DMPV_NO_FB=ON
    make -C build wiliwili -j$(nproc)
    

如果想要使用wayland (窗口模式支持不好,全屏使用没问题)

  • sudo raspi-config 开启 wayland。
  • 安装依赖(前面两个是 wiliwili 的依赖,后面的是 wayland 的依赖)
    sudo apt install libmpv-dev libmbedtls-dev libdbus-1-dev \
      libxkbcommon-dev libwayland-dev wayland-protocols
    
  • 拉取项目
    git clone --recursive https://github.com/xfangfang/wiliwili.git
    
  • 编译
    cd wiliwili
    cmake -B build -DPLATFORM_DESKTOP=ON -DGLFW_BUILD_WAYLAND=ON \
      -DGLFW_BUILD_X11=OFF -DCMAKE_BUILD_TYPE=Release -DUSE_GL2=ON -DMPV_NO_FB=ON
    make -C build wiliwili -j$(nproc)
    

开启硬件加速

mpv 默认的硬件加速在树莓派上可能会不可用(老版本系统会出现这个问题,新系统可能会解决,推荐使用下面的命令行测试),下面是自定义硬件加速方案的流程

通过 ffmpeg -decoders | grep h264 可以找到支持的 h264 解码器,应该会有两个:

h264
h264_v4l2m2m

这里 v4l2m2m 就是我们要设置的硬解方案,如果在你的设备上还有其他的内容,比如:h264_mmal 那硬解的方案也可以是 mmal,究竟支持什么硬解方案,主要看系统包管理提供的 ffmpeg。如果没有满意的,也可以自己编译 ffmpeg 安装在系统里。

  1. 应用内:设置 - 应用设置 - 开启硬件解码
  2. 应用内:设置 - 实用工具 - 打开配置目录
  3. 在配置文件中手动添加自定义硬解方案 "player_hwdec_custom": "v4l2m2m",改好之后,你的配置文件至少应该是这样的:
{
  "setting": {
    "player_hwdec": true,
    "player_hwdec_custom": "v4l2m2m"
  }
}

⚠️:可选的硬解方案还可能是:v4l2m2m-copy, mmal, mmal-copy, auto, auto-copy 你可以使用命令行 mpv 来测试:

mpv --msg-level="all=v" --hwdec="auto-copy" "https://www.w3schools.com/html/movie.mp4"

如果视频正常播放,log 没有报错出现,且能看到 Using hardware decoding (***). ,说明成功使用硬解。

我测试在 3b 上可以使用 v4l2m2m; 4b 上可以使用 mmal-copy,但是还是应该具体情况具体分析。

⚠️:需要在设置中调大显存,3b可以调到128(建议不要用3b),4b调节到256能正常播放1080+视频,更高清的视频可能需要更大的显存,如果显存不够会自动转为软解。

  1. 重启应用

存在的问题

  1. 我使用3b第一次编译到一半的时候会出现段错误,搜索了一下应该是内存不够导致的,所以我提高了虚拟内存的大小,但是问题还是存在,不过出现问题后,重启机器然后继续编译,问题就不存在了。

  2. 视频播放组件和 OpenGL3 下呈现的效果不同。GL3 下是先将视频绘制到一个fbo上然后再绘制到窗口上的指定位置,GL2 下直接绘制到全窗口,通过mpv的内置功能来指定视频的大小和位置。(两者只是窗口切换动画略有不同)

  3. 在播放的过程中出现过段错误,我不确定是wiliwili的问题,还是内存不足,抑或是系统提供的mpv或者ffmpeg的问题(包管理提供的mpv和ffmpeg版本比较老)

  4. 焦点所在的组件偶尔有不规则小黑块。(我怀疑是我这个树莓派自身硬件的问题)

  5. 开启wayland后,x11窗口模式下,最大化窗口会花屏,但是软件内全屏没问题(这个应该是树莓派系统的问题)

  6. gcc 需要大于等于 7.1,mpv 0.30.0 及更新版本效果最佳

@xfangfang
Copy link
Owner

@zihanhuang 有任何更新吗?

@zihanhuang
Copy link
Author

没有,我不熟悉opengl,需要有谁了解opengl2怎么初始化的帮忙改一下。
我尝试把glad换成2.1的,然后各种报错。

@xfangfang
Copy link
Owner

@zihanhuang 最新的dev或者yoga分支代码应该已经支持了呀,我在前面详细写了操作流程

#78 (comment)

@zihanhuang
Copy link
Author

zihanhuang commented Feb 10, 2023

@zihanhuang 最新的dev或者yoga分支代码应该已经支持了呀,我在前面详细写了操作流程

#78 (comment)

今天有空把yoga分支拉下来,可以用了,谢谢!
播放还有点问题,软解硬解都试过,拖动容易有花屏/颜色反色等各种奇怪问题,另外硬解明显掉帧。。

@zihanhuang
Copy link
Author

颜色(uv通道?)不对的概率非常高,正常播放就会出现。还发现有的视频不显示评论error code -412

@xfangfang
Copy link
Owner

xfangfang commented Feb 10, 2023

颜色(uv通道?)不对的概率非常高,正常播放就会出现。还发现有的视频不显示评论error code -412

我在我这边测试视频播放都是正常的。

任何不正常的情况出现都可以看看能不能稳定复现,如果可以稳定复现就把具体的视频链接发出来,视频相关的问题最好还附加上应用的log(注意编译的时候不要选择release, 这样能看到更多的mpv的log)


如果我没办法在我这里复现出来,那很可能就是设备相关的问题,可以试试看更新下ffmpeg或者再排查看看怎么解决,这就不是我能处理的了

@zihanhuang
Copy link
Author

不是稳定复现的,每次都不一样,比如这个。有可能反色有可能不会。方法一会再暂停,可能花屏
https://www.bilibili.com/video/BV1dT411X7vT/
1.log

@zihanhuang
Copy link
Author

新版本的mpv/ffmpeg有安装源吗,还是要自己编译?

@xfangfang
Copy link
Owner

新版本的mpv/ffmpeg有安装源吗,还是要自己编译?

我也不了解

@xfangfang
Copy link
Owner

我有一个可以复现的想法,可以改一下main.cpp,把里面log level改到debug

在运行应用期间通过log可以获得视频播放的链接

然后 mpv --referrer=“https://www.bilibili.com” “视频链接”

使用这个方法来看看直接用mpv播放会不会出问题,如果没有问题的话,可能是wiliwili中mpv的哪个参数设置的不对,这个我在3b上是没问题的。

@zihanhuang
Copy link
Author

似乎和全屏显示有关。刚才我是关闭全屏的,打开全屏显示后出错几率小了很多。

@xfangfang
Copy link
Owner

似乎和全屏显示有关。刚才我是关闭全屏的,打开全屏显示后出错几率小了很多。

有可能是和显存有关系?调大点显存试试会不会好一些。

@zihanhuang
Copy link
Author

zihanhuang commented Feb 10, 2023

似乎和全屏显示有关。刚才我是关闭全屏的,打开全屏显示后出错几率小了很多。

有可能是和显存有关系?调大点显存试试会不会好一些。

显存增加到128有改善

记录下全屏模式碰到的问题,有空用mpv播放试下。

  • 720p几乎都会花屏,画面上有规律的格子
  • 暂停一会绿屏,继续播放花屏。切换分辨率可以修复(1080和1080+互相切换没用)
  • 硬解CPU占用并没有下降?

@haozihong
Copy link

非常感谢对树莓派的支持!

我的设备是 Pi 4 (4GB RAM)。可以正常使用,就是视频画面有点卡,不过弹幕和软件UI很流畅。另外切换软解和硬解设置后,没有看出什么区别。

遇到一个问题是,播放中用L或R跳转过进度、或切换分p后,画面颜色会出问题(变蓝绿)。要退出重开才会正常。

@xfangfang
Copy link
Owner

@haozihong @zihanhuang

感谢 @Haifeng97 陪我大半夜远程调试

  1. 花屏的问题应该是解决了,拉最新的代码即可。原因貌似是 4b 的显卡驱动不支持PBO,我在解决了问题之后也搜到了一些其他项目关于 4b 这个问题的反馈。
  2. 硬解是支持的,不过可能触发的条件比较苛刻,我更新了上面关于硬解部分的说明,可以重新配置看看:树莓派上的编译运行 #78 (comment)

@haozihong
Copy link

haozihong commented Feb 13, 2023

试了一下确实没有颜色错乱的问题了!感谢作者!

我发现在用 mpv --msg-level="all=v" --hwdec="auto-copy" "https://www.w3schools.com/html/movie.mp4" 测试时, auto 会调用v4l2m2m, auto-copy会调用v4l2m2m-copy。那是不是就不用在设置文件里指定 "player_hwdec_custom": "v4l2m2m" 了?

以及v4l2m2mv4l2m2m-copy这种尾部差一个-copy的有什么区别啊?

另外注意到在选择清晰度时,如果选择了和当前一样的清晰度,还是会导致视频重新加载一下。这个是不是没有必要?

@xfangfang
Copy link
Owner

@haozihong

如果你确定硬解没问题,那么就可以不自定义,默认的硬解设置在树莓派上几乎等同于auto

带-copy的硬解设置:在解码之后会拷贝到系统内存再处理一遍,可以保证画面正常渲染(一般软解会比直接硬解渲染的好一些,带copy选项就是为了让硬解画面更好一些),也能解决一些设备上硬解的bug,后果就是cpu占用会高一些,但是肯定比纯软解低。

具体的可以看文档:https://mpv.io/manual/stable/

考虑到应该没有什么人来回点那个选项所以我并没有做额外的处理,而且在有些情况下,可以起到刷新视频的作用。

@zihanhuang
Copy link
Author

zihanhuang commented Feb 13, 2023

同楼上,各分辨率播放都正常了。多谢大佬们的支持!
我是64位系统,硬解只能用v4l2m2m v4l2m2m-copy,mmal会init失败
cpu占用估计mpv的锅,我用mpv直接打开本地视频占用也高,系统自带的vlc占用就很低。

@haozihong
Copy link

一个月前一个子模块里这个位置的更新新会导致树莓派上编译失败。

报错信息: fatal error: dbus/dbus.h: No such file or directory

手动安装了 libdbus-1-dev 之后又能编译并运行了。

@xfangfang
Copy link
Owner

@haozihong 感谢提醒,我更新了上面的构建说明

@xfangfang xfangfang pinned this issue Mar 29, 2023
@diredocks
Copy link

最新版本在 armbian 上编译成功,但由于 armbian 源中 ffmpeg 启用了 cuda 支持,导致默认总会使用 cuda 库,进而闪退。尝试过使用 flatpak 版本,依旧有此问题。使用最新版本的 raspberry pi os 编译失败,编译到 mpv_core.hpp 时,提示 mpv_event_to_node 有问题..... 设备是树莓派3

@diredocks
Copy link

在 armbian 上使用 mpv --hwdec="auto-copy" "https://www.w3schools.com/html/movie.mp4" 会使用 cuda 解码,当指定 v4l2m2m 或者 mmal 时能正常调用 gpu 解码.... 翻看 wiliwili 日志发现确实是指定了解码器的,但是一旦点开某一个视频页面就会段错误闪退....

@xfangfang
Copy link
Owner

@jailne-su

使用最新版本的 raspberry pi os 编译失败,编译到 mpv_core.hpp 时,提示 mpv_event_to_node 有问题

用的 mpv 是什么版本呢?,具体的提示是什么呢?

翻看 wiliwili 日志发现确实是指定了解码器的,但是一旦点开某一个视频页面就会段错误闪退

可以在编译时先指定 -DMPV_SW_RENDER=ON 来排除OpenGL导致的影响。

然后测试 -DMPV_SW_RENDER=OFF -DMPV_NO_FB=ON ,可能是最近的项目里cmake的更新导致的这个问题,我记着之前应该在 GL2 开启时是默认会带 -DMPV_NO_FB=ON 参数的。

@diredocks
Copy link

谢谢您,我现在先试试看解包 flatpak 版本的 wiliwili,,看看是否能使其调用 rpios 系统 ffmpeg 解码。

@diredocks
Copy link

系统中的 mpv 版本 mpv-v

mpv 0.32.0 Copyright © 2000-2020 mpv/MPlayer/mplayer2 projects
 built on UNKNOWN
ffmpeg library versions:
   libavutil       56.51.100
   libavcodec      58.91.100
   libavformat     58.45.100
   libswscale      5.7.100
   libavfilter     7.85.100
   libswresample   3.7.100
ffmpeg version: 4.3.6-0+deb11u1+rpt3

gcc版本 gcc -v

Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/10/lto-wrapper
Target: aarch64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 10.2.1-6' --with-bugurl=file:///usr/share/doc/gcc-10/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-10 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-mutex
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 10.2.1 20210110 (Debian 10.2.1-6) 

第一个错误来自 wiliwili/library/cpr/cpr/file.cpp:9:2,日志如下:

/home/leo/wiliwili/library/cpr/cpr/file.cpp:9:2: error: extra ‘;’ [-Werror=pedantic]
    9 | };
      |  ^
cc1plus: all warnings being treated as errors
make[3]: *** [library/cpr/cpr/CMakeFiles/cpr.dir/build.make:225: library/cpr/cpr/CMakeFiles/cpr.dir/file.cpp.o] Error 1
make[3]: *** Waiting for unfinished jobs....
make[3]: Leaving directory '/home/leo/wiliwili/build'
make[2]: *** [CMakeFiles/Makefile2:833: library/cpr/cpr/CMakeFiles/cpr.dir/all] Error 2
make[2]: Leaving directory '/home/leo/wiliwili/build'
make[1]: *** [CMakeFiles/Makefile2:650: CMakeFiles/wiliwili.dir/rule] Error 2
make[1]: Leaving directory '/home/leo/wiliwili/build'
make: *** [Makefile:219: wiliwili] Error 2
make: Leaving directory '/home/leo/wiliwili/build'

把符号删掉即可继续编译。

@diredocks
Copy link

第二个错误来自 wilwili/source/view/mpv_core.cpp,日志如下:

/home/leo/wiliwili/wiliwili/source/view/mpv_core.cpp: In member function ‘void MPVCore::eventMainLoop()’:
/home/leo/wiliwili/wiliwili/source/view/mpv_core.cpp:632:17: error: ‘mpv_event_to_node’ was not declared in this scope; did you mean ‘mpv_event_hook’?
  632 |                 mpv_event_to_node(&dst, event);
      |                 ^~~~~~~~~~~~~~~~~
      |                 mpv_event_hook
[ 78%] Building CXX object CMakeFiles/wiliwili.dir/wiliwili/source/view/up_user_small.cpp.o
[ 79%] Building CXX object CMakeFiles/wiliwili.dir/wiliwili/source/view/user_info.cpp.o
make[3]: *** [CMakeFiles/wiliwili.dir/build.make:1304: CMakeFiles/wiliwili.dir/wiliwili/source/view/mpv_core.cpp.o] Error 1
make[3]: *** Waiting for unfinished jobs....
make[3]: Leaving directory '/home/leo/wiliwili/build'
make[2]: *** [CMakeFiles/Makefile2:643: CMakeFiles/wiliwili.dir/all] Error 2
make[2]: Leaving directory '/home/leo/wiliwili/build'
make[1]: *** [CMakeFiles/Makefile2:650: CMakeFiles/wiliwili.dir/rule] Error 2
make[1]: Leaving directory '/home/leo/wiliwili/build'
make: *** [Makefile:219: wiliwili] Error 2
make: Leaving directory '/home/leo/wiliwili/build'

@xfangfang
Copy link
Owner

@jailne-su
第一个问题可以通过添加: -DCMAKE_CXX_FLAGS="-Wno-error=pedantic" 来解决,这个是你本地编译器的设定导致的问题。

第二个问题,升级到mpv 0.33 或者更新版本就能解决,同时我也调整了了一下代码,在 dev 分支用低版本mpv编译(>= 0.30)也没有问题啦。

@diredocks
Copy link

谢谢您,我在切换分支并拉取最新版本的源码后进行编译,同时我调整了项目的 CMakeList.txt,在第二行加入了 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error=pedantic") ,在编译 config_helper.cpp 时再次遇到了问题....

/home/leo/wiliwili/wiliwili/source/utils/config_helper.cpp: In member function ‘void ProgramConfig::load()’:
/home/leo/wiliwili/wiliwili/source/utils/config_helper.cpp:358:29: error: ‘CUSTOM_RESOURCES_PATH’ is not a member of ‘brls::View’
  358 |                 brls::View::CUSTOM_RESOURCES_PATH = theme.path;
      |                             ^~~~~~~~~~~~~~~~~~~~~
/home/leo/wiliwili/wiliwili/source/utils/config_helper.cpp:362:25: error: ‘CUSTOM_RESOURCES_PATH’ is not a member of ‘brls::View’
  362 |         if (brls::View::CUSTOM_RESOURCES_PATH.empty()) {
      |                         ^~~~~~~~~~~~~~~~~~~~~
[ 77%] Building CXX object CMakeFiles/wiliwili.dir/wiliwili/source/utils/string_helper.cpp.o
[ 78%] Building CXX object CMakeFiles/wiliwili.dir/wiliwili/source/utils/version_helper.cpp.o
make[3]: *** [CMakeFiles/wiliwili.dir/build.make:1083: CMakeFiles/wiliwili.dir/wiliwili/source/utils/config_helper.cpp.o] Error 1

@xfangfang
Copy link
Owner

@jailne-su 应该是您切换分支之后没有同步更新子模块导致的,在项目根目录输入:

git submodule update --init --recursive

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants