linuxdeepin/deepin-screen-recorder

Compiling Error

Closed this issue · 4 comments

从源码编译遇到错误,这怎么解决?

../src/main_window.cpp: In member function ‘void MainWindow::initAttributes()’:
../src/main_window.cpp:133:55: error: ‘class Dtk::Widget::DWindowManagerHelper’ has no member named ‘currentWorkspaceWindowIdList’; did you mean ‘currentWorkspaceWindows’?
for (auto wid : DWindowManagerHelper::instance()->currentWorkspaceWindowIdList()) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
currentWorkspaceWindows
Makefile:581: recipe for target 'main_window.o' failed
make: *** [main_window.o] Error 1

构建环境以及依赖是否装齐了?

假设你使用 Deepin,建议直接通过 apt build-dep deepin-screen-recorder 装齐开发依赖再尝试构建。如果仍有问题,建议先切换到和你仓库同版本的 tag 上再进行构建,成功后再进一步确认问题。

构建环境以及依赖是否装齐了?

假设你使用 Deepin,建议直接通过 apt build-dep deepin-screen-recorder 装齐开发依赖再尝试构建。如果仍有问题,建议先切换到和你仓库同版本的 tag 上再进行构建,成功后再进一步确认问题。

依赖都装齐了,没装齐的话qmake会报错,不会到make这一步了吧。
不过,我不是用的deepin,用的基于Ubuntu的elementary os,我先关闭吧,我找了其他替代软件。谢谢。

依赖都装齐了,没装齐的话qmake会报错,不会到make这一步了吧。
不过,我不是用的deepin,用的基于Ubuntu的elementary os

非 deepin 且非 arch 的话,上面的 dde 组件依赖可能会在用比较旧的版本,代码仓库 master 的代码始终是在用最新的依赖的,有可能是这里的问题。

@freeNestor 我把源码里面for循环的地方currentWorkspaceWindowIdList替换currentWorkspaceWindows然后编译一下就可以了。

    for (auto window : DWindowManagerHelper::instance()->currentWorkspaceWindows()) {
        if (window->pid() == winId()) continue;

        if (window) {
            window->deleteLater();
            windowRects << Dtk::Wm::WindowRect { window->x(), window->y(), window->width(), window->height() };
            windowNames << window->wmClass();
        }
    }