Written on: 24. 11. 2017 [17:49]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
"Megavoltik" wrote:
"roman" wrote:
Точнее там у меня сейчас 5.8 и на нём эта проблема есть.
На Qt 5.9.3 та же беда. Сегодня попробовал. Короче все что выше 5.3 - неработоспособно. Может тогда в зависимостях не >=5.7.0, а >=5.3 поставить? Хоть дописать смогу тест...
В каких таких зависимостях?
Learn, learn and learn better than work, work and work.
|
Written on: 27. 11. 2017 [10:47]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
"roman" wrote:
Пусть побудет, я в ближайшее время добавлю менеджер проектов прямо в UI.QTStarter, после чего ближе рассмотрю эту проблему и другие с Qt на Android.
Менеджера ещё не добавил, но проблему нашёл: http://oscada.org/ru/forum/posts//vision_razrabotka_polzovatelskogo_interfeisa_qt5_nevozm
Learn, learn and learn better than work, work and work.
|
Written on: 12. 08. 2018 [15:36]
|
evoro
Евгений Воропаев
registered since: 17.12.2014
Posts: 8
|
Здравствуйте, коллеги!
Из вышесказанного понял следующее:
1) Так как переходим на qt5 нужно использовать c++ стандарта ISO 2011. Для этого компилятору GCC нужно подсказать, что нужно использовать такой стандарт.
Для этого в отличие от указанной в инструкции по сборке команды ./configure указываем:
./configure Qt5Widgets_CFLAGS='-std=c++11'
У меня это сработало.
2) Или используем компилятор, который по умолчанию применяет C++ стандарта ISO 2011, согласно рекомендации Романа. Я компиляю под AltLinux KWorkstation 8 . В репозиториях, прописанных в нём по умолчанию, gcc 5.3 - самая старшая версия gcc: её и использую! Использовать другую версию проблематично для меня, но вопрос следующий...
Вопрос: На какую версию gcc перейти, чтобы реализовать вариант 2) ?
Однако,
3) После включения -std=c++11 функции пакета math.h стали доступны только через пространство имён std:: . Рекомендация Романа для решения этой проблемы: использовать компилятор, использующий функции пакета math напрямую.
Вопрос прежний: На какую версию gcc перейти, чтобы реализовать рекомендацию Романа?
4) Как применить Java-скрипт Алексея, я, честно говоря не понял, в силу отсутствия опыта работы с Java. И что именно он делает, я тоже не понял: меняет ли он текст в файлах исходников? Если меняет, то это несколько неправильно, так как начинается рассинхронизация с текущим проектом, выложенным Романом в сети в репозитории.
Сейчас решение которое я вижу для себя - корректировать исходники приписывая std:: перед всеми вызовами функций пакета math, что также неправильно и ведёт к рассинхронизации.
5) Раз проект OpenSCADA окончательно переходит на qt5, не имеет ли смысл:
- исправить вызовы этих функций в исходниках;
- включить флаг "-std=c++11" в конфигурацию для сборки или указать в инструкции по сборке, что такой флаг нужно дописать при вызове ./configure при использовании qt5?
6) Не понял, нужно ли включать флаг --with-qt5=yes ?
Итог... сборка OpenSCADA у меня остановилась.
Порекомендуйте, пожалуйста, как выйти из ситуации и продолжить сборку OpenSCADA?
|
Written on: 13. 08. 2018 [09:55]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
Зачем дублировать пост, лучше шире смотреть на вопрос?! :)
"evoro" wrote:
Из вышесказанного понял следующее:
1) Так как переходим на qt5 нужно использовать c++ стандарта ISO 2011. Для этого компилятору GCC нужно подсказать, что нужно использовать такой
Нет никакого перехода!
OpenSCADA давно адаптирована для работы с Qt5 и прекрасно работает на Qt4, собираясь на Linux окружениях начиная с около 2002 года - год основания проекта.
Т.е., на новых и "прямых" окружениях осуществляется сборка с Qt5, а на старых и "кривых" с Qt4, как Ваше.
"evoro" wrote:
2) Или используем компилятор, который по умолчанию применяет C++ стандарта ISO 2011, согласно рекомендации Романа. Я компиляю под AltLinux KWorkstation 8 . В репозиториях, прописанных в нём по умолчанию, gcc 5.3 - самая старшая версия gcc: её и использую! Использовать другую версию проблематично для меня, но вопрос следующий...
Вопрос: На какую версию gcc перейти, чтобы реализовать вариант 2) ?
На "прямую" — у меня нет проблем со сборкой на GCC4.9, GCC6, GCC7 и даже GCC5.3 на Android.
"evoro" wrote:
Однако,
3) После включения -std=c++11 функции пакета math.h стали доступны только через пространство имён std:: . Рекомендация Романа для решения этой проблемы: использовать компилятор, использующий функции пакета math напрямую.
Вопрос прежний: На какую версию gcc перейти, чтобы реализовать рекомендацию Романа?
Ответ тот-же — на "прямую".
"evoro" wrote:
4) Как применить Java-скрипт Алексея, я, честно говоря не понял, в силу отсутствия опыта работы с Java. И что именно он делает, я тоже не понял: меняет ли он текст в файлах исходников? Если меняет, то это несколько неправильно, так как начинается рассинхронизация с текущим проектом, выложенным Романом в сети в репозитории.
Сейчас решение которое я вижу для себя - корректировать исходники приписывая std:: перед всеми вызовами функций пакета math, что также неправильно и ведёт к рассинхронизации.
Естественно, и подобные хаки "кривых" окружений в замене стандартных POSIX функций недопустимы!
"evoro" wrote:
5) Раз проект OpenSCADA окончательно переходит на qt5, не имеет ли смысл:
- исправить вызовы этих функций в исходниках;
- включить флаг "-std=c++11" в конфигурацию для сборки или указать в инструкции по сборке, что такой флаг нужно дописать при вызове ./configure при использовании qt5?
Никуда он не переходит!
И замена POSIX функций это не исправление, тем более специально для тупикового и "кривого" окружения, которого в нормальных Linux дистрибутивах и всех последних компиляторах GCC6,7 нет, или как Вы думаете оно у меня собирается для Debian 9, Ubuntu 18.04, SuSE 15?
"evoro" wrote:
Порекомендуйте, пожалуйста, как выйти из ситуации и продолжить сборку OpenSCADA?
Собирать с Qt4, или пробовать предыдущую версию GCC4.9, если ALTLinux совсем не доломали и там всё еще присутствую компиляторы нескольких версий.
Learn, learn and learn better than work, work and work.
|