LINUX.ORG.RU

найти правильное название файла в devel

 ,


0

1

Собрался тут компилить плагин для hyprland, а cmake жалуется на отсутствие <libinput.h> хотя libinput-devel установлен.

/usr/local/include/hyprland/src/includes.hpp:10:10: Error: libinput.h: File not found
   10 | #include <libinput.h>

Уже было пару раз такое когда header файл назывался по-другому. Каким образом найти правильное название? Знаю это довольно просто, но забыл как делается



Последнее исправление: monkdt (всего исправлений: 1)

Ответ на: комментарий от monkdt

Поставил из AUR hyprland-git(это может быть важно, автор hy3 упоминает что нужен последний hyprland) и hy3-git, установил в конфиге layout = hy3, вроде все запустилось без ошибок и работает, так что значит запустить это реально, посмотри PKGBUILD в ауре, может ты что то пропустил.

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

так у меня опенсузя. Действительно проблема в том что не находи файлы. Я начал менять на абсолютные пути, но после ~30 файлов бросил затею. Может скинешь скомпиленную библиотеку на файловую помойку, я попробую?

monkdt
() автор топика

найти правильное название файла в devel

Вроде и проблема плёвая, но вопрос сформулирован так извращённо, что даже не знаешь что и сказать…

debugger ★★★★★
()

У меня в федорке есть libinput-devel, в котором есть /usr/include/libinput.h. М.б. всё-таки его надо поставить?

Чтобы компилятор искал твой libinput.h, ему нужно указать список директорий, в которых надо искать. У тебя строка /usr/local/include/heprland/src при сборке где-то указывается? Если нет, то лучше добавь его в CMakeLists.txt

include_directories(SYSTEM /usr/local/include/heprland/src)

Ну или посмотри, м.б. в твоём cmake для этого что-то предусмотрено.

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

Во-первых, ты можешь запускать cmake --build /path/to/build/dir -v. Тогда он будет выводить команду сборки, в ней ты увидишь все каталоги, в которых компилятор ищет заголовочные файлы (-I/path/to/includes или -isystem /path/to/includes).

Во-вторых, у тебя в сусе libinput-devel есть? Если есть, то попробуй его поставить, м.б. все проблемы решатся.

Если не решатся, то имея список директорий инклюдов уже можно будет думать, как их подсунуть. В принципе всё это не великая проблема, надо просто не костылями и правками её решать, а правильно настроить сборку.

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

libinput поставил сразу. Точнее он и был установлен, потому что собираю для hyprland уже не первый раз.

In Datei, eingebunden von /usr/local/include/hyprland/wlroots/wlr/backend/drm.h:15,
                 von /usr/local/include/hyprland/src/includes.hpp:38,
                 von /usr/local/include/hyprland/src/defines.hpp:1,
                 von /usr/local/include/hyprland/src/Compositor.hpp:7,
                 von /home/jtad/hy3/src/main.cpp:3:

Вылезает /usr/local, хотя файлы находятся в /usr. Можно ему задать в параметрах приоритетную тропу для поиска? Один CmakeList я исправил, но в build полно файлов и я честно говоря не врубаюсь откуда инклюдируется /usr/local

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

Покажи строку, которой компилируется файл типа /usr/bin/g++ ....

Проблема не в cmake, а в его конфигурации. У тебя файлики лежат по своим путям, cmake’у нужно правильно рассказать эти пути, чтобы он их передал компилятору.

В /usr/local у тебя лежат исходники hyprland’а, потому он и вылезает. Это вполне нормально.

Заголовочные файлы от libinput-devel у тебя где лежат? И вообще лучше полный лог cmake --build /path/ -v скинь.

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

cmake c гита я сначала не менял. Можешь его посмотреть https://github.com/outfoxxed/hy3. Да и когда поменял все тропы на /usr ничего не помогло. Я просто не знаю может cmake инклюдирует еще дополнительные файлы конфигурации?

monkdt
() автор топика