LINUX.ORG.RU

Unknown CMake command «qt_add_dbus_adaptor»

 ,


0

1

Вопрос QT-cmake-любам. Что такое qt_add_dbus_adaptor, и как поставить это на арчик ?

Qt5 и Qt6 установлены.

[ntfs@ntfs-a320mh build]$ cmake ..
CMake Warning (dev) in CMakeLists.txt:
  No project() command is present.  The top-level CMakeLists.txt file must
  contain a literal, direct call to the project() command.  Add a line of
  code such as

    project(ProjectName)

  near the top of the file, but after cmake_minimum_required().

  CMake is pretending there is a "project(Project)" command on the first
  line.
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) in CMakeLists.txt:
  cmake_minimum_required() should be called prior to this top-level project()
  call.  Please see the cmake-commands(7) manual for usage documentation of
  both commands.
This warning is for project developers.  Use -Wno-dev to suppress it.

-- The C compiler identification is GNU 13.2.1
-- The CXX compiler identification is GNU 13.2.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at CMakeLists.txt:36 (qt_add_dbus_adaptor):
  Unknown CMake command "qt_add_dbus_adaptor".


CMake Warning (dev) in CMakeLists.txt:
  No cmake_minimum_required command is present.  A line of code such as

    cmake_minimum_required(VERSION 3.28)

  should be added at the top of the file.  The version specified may be lower
  if you wish to support older CMake versions for this project.  For more
  information run "cmake --help-policy CMP0000".
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Configuring incomplete, errors occurred!
[ntfs@ntfs-a320mh build]$ 
★★★★★

У тебя в CMakeLists.txt должно быть вот такое:

find_package(Qt6 REQUIRED COMPONENTS DBus)
Тогда всё должно работать.

А ещё добавь cmake_minimum_required(VERSION 3.28) (или более подходящую версию) в начало файла

XMs ★★★★★
()
Последнее исправление: XMs (всего исправлений: 1)
Ответ на: комментарий от XMs

Вот кстати. У меня там уже было find_package, но я закомментировал.

find_package(XCB
    REQUIRED COMPONENTS
        XCB
        XFIXES
        DAMAGE
        COMPOSITE
        RANDR
        SHM
        UTIL
        IMAGE
)

Но оно выдавало:

CMake Error at CMakeLists.txt:7 (find_package):
  By not providing "FindXCB.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "XCB", but
  CMake did not find one.

  Could not find a package configuration file provided by "XCB" with any of
  the following names:

    XCBConfig.cmake
    xcb-config.cmake

  Add the installation prefix of "XCB" to CMAKE_PREFIX_PATH or set "XCB_DIR"
  to a directory containing one of the above files.  If "XCB" provides a
  separate development package or SDK, be sure it has been installed.
windows10 ★★★★★
() автор топика
Ответ на: комментарий от theNamelessOne

Та я тут сдуру плазму хочу собрать =)

Вот уж не думал что здесь могут быть такие детские болячки как «не найден модуль, что поставить - не скажу».

windows10 ★★★★★
() автор топика
Ответ на: комментарий от NickNotNick

Кто бы мог подумать, что для сборки плазмы нужен Qt.

Где ты в логе ошибок увидел что нужен Qt ?

Я тебе больше скажу, плазму я собрать так и не смог, оно запросило еще пяток таких «command not found» после чего мне пришлось грепать папку с сырцами, искать где эти команды, а в конце сказало что то типа install (FILES not configured, пшел нафиг.

Еще один всратый бред. Это все равно что я в программе выдам «function bit_count() not found» вместо того чтобы сразу сказать «python3 required».

Благо мне там нужна была одна подпрограмма - ручками собрал.

windows10 ★★★★★
() автор топика
Ответ на: комментарий от XMs

Тебе нужен ECM (extra CMake modules). Обычно идёт отдельным пакетом

Нет, мне нужен не ECM, мне нужно было сделать пяток сраных include в CmakeLists.txt, которые подключат файл с командой, которая not found. И то, все закончилось тем что какому-то там модулю чо-то там install не было описано какого-то неизвестного параметра, я так понимаю это что-то типа --prefix= у нормальных людей.

Но увы у пердолинга тоже есть time_limit. За час не вышло - пшло нафиг, это ж не работа а хобби =)

windows10 ★★★★★
() автор топика
Ответ на: комментарий от windows10

Где ты в логе ошибок увидел что нужен Qt?

А это что по-твоему?

CMake Error at CMakeLists.txt:36 (qt_add_dbus_adaptor):
  Unknown CMake command "qt_add_dbus_adaptor".

Я тебе больше скажу, плазму я собрать так и не смог, оно запросило еще пяток таких «command not found»

То есть ты изменил сборочный скрипт, он поломался, но виноваты cmake и qt. Логично.

NickNotNick
()
Ответ на: комментарий от NickNotNick

А это что по-твоему?

А это Unknown CMake command "qt_add_dbus_adaptor"..

То есть ты изменил сборочный скрипт, он поломался, но виноваты cmake и qt. Логично.

Нет, виноват разработчик. В первую очередь в том, что использует этот шлак. Давай ты логист посмотришь на это:

[ntfs@ntfs-a320mh Downloads]$ git clone https://github.com/KDE/plasma-workspace;cd plasma-workspace/xembed-sni-proxy/;cmake .
Cloning into 'plasma-workspace'...
remote: Enumerating objects: 278300, done.
remote: Counting objects: 100% (8747/8747), done.
remote: Compressing objects: 100% (1523/1523), done.
remote: Total 278300 (delta 7470), reused 8367 (delta 7203), pack-reused 269553
Receiving objects: 100% (278300/278300), 206.85 MiB | 5.67 MiB/s, done.
Resolving deltas: 100% (231723/231723), done.
Updating files: 100% (7768/7768), done.
CMake Warning (dev) in CMakeLists.txt:
  No project() command is present.  The top-level CMakeLists.txt file must
  contain a literal, direct call to the project() command.  Add a line of
  code such as

    project(ProjectName)

  near the top of the file, but after cmake_minimum_required().

  CMake is pretending there is a "project(Project)" command on the first
  line.
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) in CMakeLists.txt:
  cmake_minimum_required() should be called prior to this top-level project()
  call.  Please see the cmake-commands(7) manual for usage documentation of
  both commands.
This warning is for project developers.  Use -Wno-dev to suppress it.

-- The C compiler identification is GNU 13.2.1
-- The CXX compiler identification is GNU 13.2.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at CMakeLists.txt:5 (find_package):
  By not providing "FindXCB.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "XCB", but
  CMake did not find one.

  Could not find a package configuration file provided by "XCB" with any of
  the following names:

    XCBConfig.cmake
    xcb-config.cmake

  Add the installation prefix of "XCB" to CMAKE_PREFIX_PATH or set "XCB_DIR"
  to a directory containing one of the above files.  If "XCB" provides a
  separate development package or SDK, be sure it has been installed.


CMake Warning (dev) in CMakeLists.txt:
  No cmake_minimum_required command is present.  A line of code such as

    cmake_minimum_required(VERSION 3.28)

  should be added at the top of the file.  The version specified may be lower
  if you wish to support older CMake versions for this project.  For more
  information run "cmake --help-policy CMP0000".
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Configuring incomplete, errors occurred!
[ntfs@ntfs-a320mh xembed-sni-proxy]$

И скажешь, что же не хватает моей сраной системе в которой уже установлено все что можно установить?

Наверное ты ответишь что «воу, братишка, ты собираешь подпакет, а зависимости могли быть определены в пакете выше», на что я отвечу, что:

а) https://github.com/KDE/plasma-workspace/tree/master/xembed-sni-proxy:

##Build instructions

cmake .
make
sudo make install
After building, run xembedsniproxy.

b) plasma-workspace тоже не собирается, просто с другой ошибкой.

Виноват ли cmake? Возможно. Во всяком случае нормальный конфигурационный скрипт пишет русским по белому, чего ему не хватает, после чего можно apt-get\yum\pacman install то, чего не хватает - и оно работает дальше. Да и есть у меня эти модули, просто почему-то их надо подгружать отдельно.

windows10 ★★★★★
() автор топика
Последнее исправление: windows10 (всего исправлений: 1)
Ответ на: комментарий от windows10

«Логисты» могут посмотреть на это https://github.com/KDE/plasma-workspace/blob/master/.kde-ci.yml и понять какое требуется окружение сборки. Как тебе выше написали это extra-cmake-modules и целая портянка зависимостей. Проблема явно не на стороне разработчиков ;)

PRN
()
Ответ на: комментарий от windows10

Ты слишком самокриточен). Собирается оно как 2 пальца при условии что есть CI для которого написан kde-ci.yml. Скорее всего это gitlab. Собрать такое руками скорее всего можно, но это наркомания). Если бы мне такое понадобились, я бы CI настраивал.

PRN
()
Ответ на: комментарий от windows10

Чтож, давай я сначала признаю, что разработчики поступили некрасиво – их README и способ сборки не соответствуют действительности и вводят в заблуждение.

Теперь будем разбираться. Ты пытался собрать часть Plasma Workspace и получил кучу ошибок. Это явно не правильно, с другой стороны отдельная инструкция по сборке части библиотеки – тоже необычно. Попробуем погулить XEmbed SNI Proxy и на первой странице получаем ссылку на старую репу. Сейчас там красуется «THIS REPO IS NOW CLOSED», но если отмотать пару коммитов, увидим знакомое:

XEmbed SNI Proxy

The goal of this project is to make xembed system trays available in Plasma.

This is to allow legacy apps (xchat, pidgin, tuxguitar) etc. system trays[1] available in Plasma which only supports StatusNotifierItem [2].

Ideally we also want this to work in an xwayland session, making X system tray icons available even when plasmashell only has a wayland connection.

This project should be portable onto all other DEs that speak SNI.

How it works (in theory)

  • We register a window as a system tray container
  • We render embeded windows composited offscreen
  • We render contents into an image and send this over DBus via the SNI protocol
  • XDamage events trigger a repaint
  • Activate and context menu events are replyed via X send event into the embedded container as left and right clicks

There are a few extra hacks in the real code to deal with some toolkits being awkward.

Build instructions

cmake .
make
sudo make install

After building, run xembedsniproxy.

Проще говоря, проект влили в Plasma Workspace, а README не обновили. Зато вырезали в начале CMakeLists.txt важную часть

cmake_minimum_required(VERSION 2.8.12)

project(xembedsniproxy)

# Silence CMake 3.0 warnings
if(POLICY CMP0043)
    cmake_policy(SET CMP0043 OLD)
endif()

find_package(ECM 5.14.0 REQUIRED NO_MODULE)
include(FeatureSummary)
include(WriteBasicConfigVersionFile)
include(GenerateExportHeader)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR})


find_package(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS
    Core
    DBus
    Gui
    X11Extras
)

include(KDEInstallDirs)
include(KDECMakeSettings)
include(KDECompilerSettings)

include(ECMInstallIcons)
include(ECMOptionalAddSubdirectory)
include(ECMQtDeclareLoggingCategory)

# required frameworks by Core
find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS
    WindowSystem
)

Такой вот детектив.

NickNotNick
()