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 ★★
()

<едва уловимым шёпотом>

а ты вообще знаешь, чем угловые скобочки отличаются от кавычек в директивах инклюд? ;)

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

едва уловимым шёпотом

Шепот должен быть еще тише, так как с вероятностью 99% это здесь ни при чем.

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

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

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

действительно не запустился ) Жаль

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 ★★★★★
()
Ответ на: комментарий от Ivan_qrt

все дело в том, что файлы находятся в /usr, а ищет он как я видел в /usr/local. Поменял в СMakeList на /usr, а он их все равно не находит. Я этого не понимаю

monkdt
() автор топика
Ответ на: комментарий от 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
() автор топика
Ответ на: комментарий от Ivan_qrt

Мне кажется не в Cmake дело. Почему-то надо исправлять тропы в файлах которые инклюдируются в предыдущих в файлах выхлопе ошибки. Как такое может быть?

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

Походу дело в том что у тебя hyprland в /usr/local стоит и у него pkgconfig кривой, попробуй в hyprland.pc добавить в Cflags: -I"/usr/include"

arax ★★
()
Ответ на: комментарий от 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
() автор топика
Ответ на: комментарий от monkdt

Так а ты билд перегенерил?

cmake -DCMAKE_BUILD_TYPE=Debug -B build

Если да то покажи содержимое build\CMakeCache.txt

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

С cmake на глазок всё ок. Лог сборки полный покажи с -v.

И содержимое hyprland.pc.

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

Нет дело не в этом, сейчас собрал hyprland из git и установил в /usr/local, hy3 после этого нормально собрался

arax ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.