[РЕШЕНО] Сборка Freeciv с клиентом Qt5

Ответить
Аватара пользователя
Zeffanyx
Сообщения: 1275
Зарегистрирован: 12 сен 2011, 14:25
Operating system: Rosa Fresh R11, OpenMandriva Lx 4 (Cooker)
Откуда: Санкт-Петербург

[РЕШЕНО] Сборка Freeciv с клиентом Qt5

Сообщение Zeffanyx » 14 авг 2019, 13:10

Не удаётся собрать Freeciv c клиентом Qt5, программа не может найти заголовки для Qt5:

Код: Выделить всё

./configure  --with-qt5-includes=/usr/include/qt5 --with-qt5-libs=/usr/lib64/qt5 --enable-client=qt
..
configure: error: selected client 'qt' cannot be built: Missing Qt5 development files
При этом, нужные заголовки в системе точно есть.

Я посмотрел в спек-файл этого пакета из openSUSE и обратил внимание, что там есть патч как раз про это:
fix-qt5-detection.patch

Код: Выделить всё

--- m4/qt5.m4.orig	2015-03-16 15:29:47.800729769 +0100
+++ m4/qt5.m4	2015-03-16 15:41:35.044747937 +0100
@@ -114,8 +114,8 @@
 
 dnl If $1 is Qt 5's moc command then $2 else $3
 AC_DEFUN([FC_QT5_IF_QT5_MOC],
-  AS_IF([test "`$1 -v 2<&1 | grep -o 'Qt [[[0-9]]]\+'`" = "Qt 5" ||
-         test "`$1 -v 2<&1 | grep -o 'moc [[[0-9]]]\+'`" = "moc 5" ],
+  AS_IF([test "`$1 -v 2<&1 | grep -o 'Qt 5\+'`" = "Qt 5" ||
+         test "`$1 -v 2<&1 | grep -o $1' 5\+'`" = "$1 5" ],
     [$2], [$3]))
 
 dnl Set MOCCMD to $1 if it is the Qt 5 "moc". If not run $2 parameter.
Я его применил, но это не сработало.
Я не понимаю, как именно работает определение наличия заголовков Qt5, возможно для Росы нужно патч как-то изменить?
Последний раз редактировалось Zeffanyx 20 авг 2019, 15:58, всего редактировалось 1 раз.

Аватара пользователя
VictorR2007
Сообщения: 5771
Зарегистрирован: 12 сен 2011, 13:00
Operating system: ROSA 2016.1
Откуда: Северодвинск

Сборка Freeciv с клиентом Qt5

Сообщение VictorR2007 » 14 авг 2019, 18:20

Наверное так

Код: Выделить всё

export CPPFLAGS="$CPPFLAGS -I/usr/include/qt5"
%configure2_5x \
По поводу команды
./configure в спеке.
Обычно, за очень редким исключением, она записывается как

Код: Выделить всё

export CPPFLAGS="$CPPFLAGS -I/usr/include/qt5
%configure2_5x \
      --with-qt5-libs=/usr/%{_lib}/qt5 \
      --enable-client=qt
а не

Код: Выделить всё

./configure 

Аватара пользователя
Zeffanyx
Сообщения: 1275
Зарегистрирован: 12 сен 2011, 14:25
Operating system: Rosa Fresh R11, OpenMandriva Lx 4 (Cooker)
Откуда: Санкт-Петербург

Сборка Freeciv с клиентом Qt5

Сообщение Zeffanyx » 15 авг 2019, 14:52

Попробовал - не выходит. Хз, почему так.
Вижу сборки Freeciv-qt для убунты, суси и манджары, а в Росе не собрать :(

На всякий случай, вот часть спека:

Код: Выделить всё

%build
autoreconf -fi
#locales are not in %{_gamesdatadir}
export localedir=%{_datadir}/locale
export CPPFLAGS="$CPPFLAGS -I/usr/include/qt5"

%configure2_5x \
    --bindir=%{_gamesbindir} \
    --datadir=%{_gamesdatadir} \
    --localedir=%{_datadir}/locale \
    --enable-client=qt,gtk3.22,sdl2 \
    --with-qt5-includes=%{_includedir}/qt5 \
    --with-qt5-libs=/usr/%{_lib}/qt5 \
    --enable-ipv6=yes \
    --enable-sys-lua=yes \
    --with-libbz2 \
    --with-liblzma \
    --disable-static
%make
Кроме того, что вы советовали добавить, я заменил:

Код: Выделить всё

    --with-qt5-includes=%{_libdir}/qt5/includes
на

Код: Выделить всё

    --with-qt5-includes=%{_includedir}/qt5 
И ещё. Команда

Код: Выделить всё

 qmake-qt5 --version 
выдаёт такое:

Код: Выделить всё

QMake version 3.1
Using Qt version 5.11.2 in /usr/lib64
Хотя фактически библиотеки лежат в /usr/lib64/qt5/
Может, это относится к проблеме?

Аватара пользователя
VictorR2007
Сообщения: 5771
Зарегистрирован: 12 сен 2011, 13:00
Operating system: ROSA 2016.1
Откуда: Северодвинск

Сборка Freeciv с клиентом Qt5

Сообщение VictorR2007 » 15 авг 2019, 20:26

Zeffanyx писал(а):
15 авг 2019, 14:52
Хотя фактически библиотеки лежат в /usr/lib64/qt5/
Может, это относится к проблеме?
Я вчера затупил.
Либы как раз и находятся в /usr/lib64, а я отвлекся на правила написания пути в lib, что не обратил внимание, что путь неверный.
И записать правильнее так,

Код: Выделить всё

--with-qt5-libs=%{_libdir}
ну или в крайнем случае

Код: Выделить всё

--with-qt5-libs=/usr/%{_lib}
Спек должен подходить к обоим архитектурам.
А в /usr/lib64/qt5/ лежат бинарники и дополнительные плагины во вложенных папках.
Либ там нет. Смотрите у себя в папке.
Вложения
libqt.jpeg

Аватара пользователя
Zeffanyx
Сообщения: 1275
Зарегистрирован: 12 сен 2011, 14:25
Operating system: Rosa Fresh R11, OpenMandriva Lx 4 (Cooker)
Откуда: Санкт-Петербург

Сборка Freeciv с клиентом Qt5

Сообщение Zeffanyx » 16 авг 2019, 11:05

Уфф, поборол, наконец-то.
дело было вовсе не в расположении заголовков или библиотек Qt5.
Нужно было всего лишь сделать так:

Код: Выделить всё

export CXXFLAGS=-std=c++11
после этого скрипт стал ругаться на неправильно работающий moc. Я посмотрел (which moc) и увидел, что по умолчанию moc используется из /usr/lib/qt4/bin/moc, а принадлежит он пакету lib64qt4-devel. Реально, странное расположение файла (ещё и путь по умолчанию в PATH). Параллельно имеется новый moc в /usr/lib64/qt5/bin/moc, который не в PATH. В общем, после того как я это исправил, всё заработало и собралось.
Собрал пока себе в папке, до спека пока руки не доходят.

Аватара пользователя
Zeffanyx
Сообщения: 1275
Зарегистрирован: 12 сен 2011, 14:25
Operating system: Rosa Fresh R11, OpenMandriva Lx 4 (Cooker)
Откуда: Санкт-Петербург

Сборка Freeciv с клиентом Qt5

Сообщение Zeffanyx » 19 авг 2019, 14:54

Опакетил Qt-клиент. Кому нужно - берите.

Ответить