LINUX.ORG.RU

texmaker 5 требует qt5 >=5.7

 


0

1

Решил потыкать новый texmaker 5, но на сайте есть версия только для ubuntu 17, а у меня 16.04. Там же сказано что нужен qt5 >=5.7. Я скачал qt-opensource-linux-x64-5.10.1.run с официального сайта qt, но как-то побаиваюсь его запускать (размер 1Гб), не рухнуло бы все. В этих qt не разбираюсь. Подскажите, не рухнет ли все? И стоил ли вообще это делать ради того, чтобы потыкать в новую версию.

Если хочешь попробовать, то собирай texmaker из исходников со скачанным Qt. Ничего не рухнет, так как скачанный файл является установочным пакетом.

kachsheev ★★★ ()

Самый надёжный способ, имхо - собрать нужную версию Qt статически в отдельном каталоге, а потом собрать с ней интересующую тебя программу. При этом гарантированно ничего не рухнет и не загадится.

Но способ трудозатратный по времени. Во-первых, сама сборка Qt может идти несколько часов, во вторых, желательно перед этим разобраться с ключами configure (это, кстати, сильно поможет сборку ускорить). Я этим занимался под виндой. В линуксе процесс должен быть намного проще, ибо питон, openssl и прочее ставится из репозиториев, и в отличие от винды не надо забивать абсолютные пути (кроме пути к qmake, который определяет версию Qt). Но на ключи configure из моей заметки посмотри, они должны быть сильно похожие.

Ну а нужно ли тебе это - решай сам.

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

Если поставить QT нужной версии, то, я думаю, можно установить и deb пакетом для 17.04. Насчет «рухнет» я имел в виду другое. QT, как я понимаю, уже используется другими программами. Если я сейчас запущу установку QT последней версии, то эти программы не поломаются?

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

Если поставить QT нужной версии

При чём тут QuickTime?

anonymous ()

Инсталлятор Qt спрашивает куда нужно ставить Qt. Системную Qt он затирает. Если поставить сторонние версии Qt5 куда-нибудь в /opt, то ничего не поломается. Texmaker'у нужно потом указать на эту инсталляцию Qt.

Лучше собрать texmaker из исходников с системной версией Qt5. Он не должен чего-то явно требовать из последней версии.

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

kachsheev Скомпилил на виртуалке. Сначала поставил Qt в /opt. Потом запустил qmake с путем из этой директории, ну потом make и make install. Получился бинарник. Запустил, потыкал. Новых функций и усовершенствований нет, только поменялась морда, теперь вся черно-белая. Когда то это была моя основная прога для работы с техом, сейчас пользую texworks, но слежу за развитием texmaker и texstudio. Попробовал запустить этот бинарник на своей машине где версия Qt ниже требуемой. Не запустился и стал требовать Qt >=5.7. Я не программист, вопрос такой - нельзя ли скомпилить такой бинарник, чтоб в нем внутри были все требуемые части Qt?

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

нельзя ли скомпилить такой бинарник, чтоб в нем внутри были все требуемые части Qt?

Можно. Это называется статическая линковка. Чтобы слинковать Qt статически, его нужно сначала пересобрать, т.к. в стандартной поставке идут только динамические библиотеки *.so, а для статической линковки нужны статические библиотеки *.a

Нужные динамические библиотеки можно подсунуть программе через LD_LIBRARY_PATH При этом можно сделать так, чтобы перекрывалась системная версия библиотеки.

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

по-дефолту ему не нужен 5.7 вообще, просто разработчик поленился написать правильные правила и добавить одну строку в код. Вот патч (сохранить как fix.diff):

diff -pruN texmaker-5.0.2.o/main.cpp texmaker-5.0.2/main.cpp
--- texmaker-5.0.2.o/main.cpp   2017-07-27 09:11:53.000000000 +0300
+++ texmaker-5.0.2/main.cpp     2018-04-24 20:27:02.308004399 +0300
@@ -46,8 +46,10 @@ for (QStringList::Iterator it = ++(rawar
     }
 
 #if !defined(Q_OS_MAC)
+#if QT_VERSION >= QT_VERSION_CHECK(5,6,0)
 QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
 #endif
+#endif
 QStringList g_qtFlags = {"--disable-gpu"};
 char **newArgv = appendCommandLineArguments(argc, argv, g_qtFlags);
 int newArgc = argc + g_qtFlags.size();
diff -pruN texmaker-5.0.2.o/texmaker.pro texmaker-5.0.2/texmaker.pro
--- texmaker-5.0.2.o/texmaker.pro       2017-08-13 16:20:49.000000000 +0300
+++ texmaker-5.0.2/texmaker.pro 2018-04-24 20:29:07.896005131 +0300
@@ -12,7 +12,7 @@ TEXMAKERVERSION=5.0.2
 DEFINES += TEXMAKERVERSION=$${TEXMAKERVERSION}
 
 
-equals(QT_MAJOR_VERSION, 5):greaterThan(QT_MINOR_VERSION, 6) {
+equals(QT_MAJOR_VERSION, 5) {
 QT += core gui widgets xml network printsupport concurrent core-private script
 equals(INTERNALBROWSER,yes){
 QT += webenginewidgets


Компиляция как-то так:

sudo apt install build-essential qtbase5-dev qtchooser
cd texmaker-5.0.2/
patch -p1 < fix.diff
export QT_SELECT=qt5
qmake && make -j2

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

Не катит твоя мантра.

$ patch -p1 < fix.diff 
patching file main.cpp
Hunk #1 FAILED at 46.
1 out of 1 hunk FAILED -- saving rejects to file main.cpp.rej
patching file texmaker.pro
Далее
$ qmake
Project MESSAGE: This project is using private headers and will therefore be tied to this specific Qt module build version.
Project MESSAGE: Running this project against other versions of the Qt modules may crash at any arbitrary point.
Project MESSAGE: This is not a bug, but a result of using Qt internals. You have been warned!
И на make -j2 получаем
main.cpp:49:32: error: ‘AA_EnableHighDpiScaling’ is not a member of ‘Qt’
 QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
                                ^
Makefile:3858: ошибка выполнения рецепта для цели «.obj/main.o»
make: *** [.obj/main.o] Ошибка 1
make: *** Ожидание завершения заданий…
Что-то 46 не нравится. Я не программист, поэтому для меня это мантра. Может чего подкрутить надо?

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

В целом я понимаю о чем речь, но я не программист, реализация непонятна.

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

AA_EnableHighDpiScaling

Предположу, что он появился в 5.7

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

1 out of 1 hunk FAILED

У тебя какой texmaker? Патч для последней версии 5.0.2
Update: да, что-то я накосячил. Сейчас поправлю. Лор косячит патч.

former_anonymous ★★★ ()
Последнее исправление: former_anonymous (всего исправлений: 2 )

Нет, не рухнет

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

Версия 5.0.2. Попробовал с новым патчем. Вывод qmake:

$ qmake
Project MESSAGE: This project is using private headers and will therefore be tied to this specific Qt module build version.
Project MESSAGE: Running this project against other versions of the Qt modules may crash at any arbitrary point.
Project MESSAGE: This is not a bug, but a result of using Qt internals. You have been warned!
Тут как бы нормально, только предупреждение, не баг. Вывод make -j2:
qpdfbookmarkmodel.cpp:47:42: fatal error: private/qabstractitemmodel_p.h: Нет такого файла или каталога
compilation terminated.
Makefile:4979: ошибка выполнения рецепта для цели «.obj/qpdfbookmarkmodel.o»
make: *** [.obj/qpdfbookmarkmodel.o] Ошибка 1
make: *** Ожидание завершения заданий…
Что-то не то в Датском королевстве ...

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

Сработало. Вы - мастер, однако. Коротенько опишите, что делает этот патч? Я хоть и не программист, но хотел бы понять, что происходит. Автор проги особо отметил, что нужен qt >= 5.7, но получается, что и без этого можно поставить. Как то непонятно.

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

При применении этого патча отключается поддержка HiDPI-дисплеев, соответственно TexMaker на современных дисплеях будет выглядеть неюзабельно.

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

про highdpi уже написали. Qt 5.7 ещё нужен для реализации встроенного браузера на основе WebEngine, который используется видимо для какого-то предпросмотра. НО этот браузер по-умолчанию отключён и не компилируется. Поэтому всё что нужно сделать чтобы скомпилировать на старой версии Qt - это отключить highdpi.

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

На другом компе с той же операционкой почему то не проходит, qmake дает другую ошибку

Project ERROR: Unknown module(s) in QT: script
libqt5script5 стоит

rustamych ★★★ ()
Последнее исправление: rustamych (всего исправлений: 1 )
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.