Показаны сообщения с ярлыком Qt. Показать все сообщения
Показаны сообщения с ярлыком Qt. Показать все сообщения

12/08/2010

Баг в Qt

Понадобилось мне в QtAda использовать класс QProcess для запуска сторонних приложений и управления ими из моей программки.

В результате чего в Qt 4.7.1 был обнаружен баг:
Сигнал QProcess:started вырабатывается 2 раза при старте процесса.

Оказывается баг (QTBUG-7039) известен аж с 2009 года, и даже есть патч,
но отчего то Nokia не хочет исправлять эту ошибку. А жаль.

Вот пример приложения:

 /* my_object.h */

#include
#include
#include
#include

class My_Object : public QObject {

  Q_OBJECT

public:
  My_Object () {
    this->p = new QProcess;

    connect (this->p,
         SIGNAL (started()),
         this,
         SLOT(appStarted()));
  };

  void execute () {
    if (p)
      p->start ("ls");

    if (!p->waitForStarted (10000))
      qDebug () << "cannot start process" << p->exitCode ();
  }

public slots:
  void appStarted () {
    qDebug () << "Slot : Process Started" << p->pid ();
  }

private:
  QProcess *p;
};


/* main.cpp */
#include "my_object.h"

int main(int argc, char *argv[])
{
  My_Object *m = new My_Object;
  m->execute ();
  delete m;
}

После компиляции:

qmake -project && qmake && make
имеем:

./process
Slot : Process Started 16669
Slot : Process Started 16669

6/14/2009

QtAda Examples

Всем привет.
Рад сообщить вам о начале проекта по портированию Qt примеров с языка C++ на язык
Ada.
В настоящий момент полностью реализовано 5 примеров.
Адрес проекта : https://sourceforge.net/projects/qtada/

Все желающие могут присоединиться.
P.S. Для вас это отличная возможность изучить и Qt и Аду.

6/08/2009

Релиз QtAda 3.0

Всем привет.
Вышла версия 3.0.0 библиотеки QtAda.
В этом релизе исправлено много ошибок, добавлена поддержка новых классов.
А также проведена большая работа по упрощению использования.

Системные требования:
  • компилятор - gnat gpl 2009
  • семантический анализатор asis-gpl-2009
  • библиотека qt-4.5.1
Скачать библиотеку QtAda можно с официального сайта www.qtada.com

5/21/2009

Установка и настройка QtAda

В этой статье, я хочу вам рассказать как скачать и установить библиотеку Qtada.

Qtada - это библиотека, которая позволяет создавать графический интерфейс пользователя на языке Ада, с использованием возможностей библиотеки Qt.

Для того чтобы установить QtAda понадобится установить и настроить :

  1. Компилятор языка Ада (gnat)
  2. Библиотеку для семантического анализа программ на Аде (asis)
  3. Библиотеку Qt, версии не ниже 4.5.0
  4. Библиотеку QtAda версии 3.x

1. Компилятор:

QtAda написана с использованием языка Ада стандарта 2005 года. Компилятор Gnat от компании AdaCore наиболее полно поддерживает стандарт Ады 2005, и позволяет без проблем скомпилировать библиотеку. Для установки QtAda нужно использовать Gnat GPL 2008 - самую последнюю версию на данный момент, доступную для некоммерческого использования. Скачать компилятор можно с официального сайта www.adacore.com или же с одного из зеркал. Размер компилятора около 90 мегабайт.

Я качал Gnat с зеркала на сайте ftp.mipt.ru :

cd /tmp/ && wget -c ftp://ftp.mipt.ru/ada/gnat-gpl-2008/x86_64-linux/gnat-gpl-2008-x86_64-pc-linux-gnu-bin.tar.gz

Распаковываем во временную папку:

cd /tmp/ && tar xfv gnat-gpl-2008-x86_64-pc-linux-gnu-bin.tar.gz

Перемещаем распакованную папку в /opt/gnat/:

mv /tmp/gnat-2008-x86_64-pc-linux-gnu-bin /opt/gnat

Пол-дела сделано.

Теперь, чтобы воспользоваться компилятором, нужно прописать в переменных окружения пути к исполняемым файлам и библиотекам. Для этого проще всего создать в домашнем каталоге файл ~/.ada_rc примерно следующего содержания:

export PATH=/opt/gnat/bin:$PATH

export LD_LIBRARY_PATH=/usr/lib64/gcc/x86_64-pc-linux-gnu/4.2.4/:/opt/gnat/lib/gcc/x86_64-pc-linux-gnu/4.1.3/adalib/:$LD_LIBRARY_PATH

Далее по необходимости, можно каждый раз набирать в консоли source ~./ada_rc или же прописать эту строчку в файле ~/.bashrc

Пути к компилятору обязательно должны быть первыми в обоих переменных окружения. Это нужно по следующей причине: скорее всего ваш системный GCC не скомпилирован с поддержкой языка программирования Ада, и поэтому он не сможет запустить компилятор gnat. По этой причине, вместе с gnat'ом поставляется своя версия gcc, которая умеет делать все что нужно.

Следующий шаг выполнять НЕ НУЖНО, если версия вашего системного gcc старше или такая же как и версия gcc,предоставляемого gnat'ом (в данном случае 4.1.2)

Если же у вас в системе компилятор новее, то gcc, который входит в состав gnat, может

работать некорректно, из за конфликтов своих библиотек с системными, а конкретно библиотеки, libgcc_s.so.1

Нужно удалить библиотеку поставляемую вместе с gnat:

rm -i `find /opt/gnat/ -name libgcc_s.so.1`

и сделать символическую ссылку на системную:

ln -s /usr/lib64/gcc/x86_64-pc-linux-gnu/4.3.3/libgcc_s.so.1 /opt/gnat/lib64/

Теперь можно со спокойной душой набрать в консоли

gnatls -v

и убедиться что компилятор работает.

Вывод должен быть примерно следующим:

GNATLS GPL 2008 (20080521)

Copyright (C) 1997-2008, Free Software Foundation, Inc.

Source Search Path:

/usr/lib64/gnat-gpl/x86_64-pc-linux-gnu/4.1-2008/adainclude/

/opt/gnat/lib/gcc/x86_64-pc-linux-gnu/4.1.3/adainclude/

Object Search Path:

/usr/lib64/gnat-gpl/x86_64-pc-linux-gnu/4.1-2008/adalib/

/opt/gnat/lib/gcc/x86_64-pc-linux-gnu/4.1.3/adalib/

Project Search Path:

/opt/gnat/lib/gnat/

2. Установка ASIS

ASIS - это Спецификация Семантического Интерфейса к языку Ада (Ada Semantic Interface Specification, ASIS). Он необходим для корректной работы компилятора мета информации, поставляемого с QtAda'ой.

Скачать ASIS можно там же где и компилятор:

cd /tmp && wget -c ftp://ftp.mipt.ru/ada/gnat-gpl-2008/x86_64-linux/tools/asis/asis-gpl-2008-src.tgz

Затем его надо распаковать:

tar xfv asis-gpl-2008-src.tgz

Перейти в каталог с исходниками:

cd asis-2008-src

Скомпилировать:

make INSTALL_DIR=/opt/gnat

Установить:

make INSTALL_DIR=/opt/gnat install

Теперь нужно убедиться, что ASIS установлен корректно, и QtAda при компиляции обнаружит проектный файла библиотеки ASIS. Для этого проверьте, есть ли файл asis.gpr в дирректории /opt/gnat/lib/gnat/

Если есть, то все хорошо, и можно продолжать дальше. Если нет, то что-то не так.

3. Установка Qt.

Qt - это кросс платформенная библиотека для создания графического интерфейса пользователя.

Скачать можно с сайта www.trolltech.com.

Процесс установки Qt я здесь описывать не буду.

Замечу лишь, что при конфигурации Qt убедитесь, что библиотека сконфигурирована БЕЗ флага -no-accessebility

4. Установка QtAda

Если ваш системный компилятор новее, чем тот, что идет в составе Gnat, то перед установкой QtAda нужно чуть чуть сконфигурировать компилятор, дабы корректно откомпилировать ту часть проекта, которая написана на C++.

Сначала узнаем версию системного компилятора:

/usr/bin/gcc -v

Из полученного вывода нужна самая последняя строка. В моем случае она выглядит так:

gcc версия 4.3.3 (Gentoo 4.3.3-r2 p1.1, pie-10.1.5)

Из этой строки нам понадобится только Gentoo 4.3.3-r2.

Открываем в вашем любимом текстовом редакторе файл compilers.xml :

emacs /opt/gnat/share/gprconfig/compilers.xml

Находим там блок, который начинается с комментария <!-- GCC 3.x & 4.x -->

и заменяем в строке <grep regexp="\(GCC\) (\S+)" group="1">

выражение \(GCC\) на (Gentoo\ 4.3.3-r2)

Далее ищем блок, который начинается с комментария <!-- G++ compilers --> и проделываем те же самые манипуляции.

Для окончательной конфигурации компилятора нужно выполнить:

gprconfig

В результате чего в консоли появится вот такой список:

--------------------------------------------------

gprconfig has found the following compilers on your PATH.

Only those matching the target and the selected compilers are displayed.

(A) GNAT for Ada in /opt/gnat/bin/ version 2008 (default runtime)

(B) GNAT for Ada in /opt/gnat/bin/ version 2008 (native runtime)

(C) GNAT for Ada in /opt/gnat/bin/ version 2008 (sjlj runtime)

(D) GCC-ASM for Asm in /opt/gnat/bin/ version 4.1.3

(E) GCC-ASM for Asm2 in /opt/gnat/bin/ version 4.1.3

(F) GCC-ASM for Asm_Cpp in /opt/gnat/bin/ version 4.1.3

(G) GCC for C in /usr/bin/ version Gentoo 4.3.3-r2

(H) G++ for C++ in /usr/bin/ version Gentoo 4.3.3-r2

Select or unselect the following compiler (or "s" to save):

Нажимаем A, <enter>, D, <enter>, E <enter>, F <enter>, G <enter>, H <enter>

Возле каждого выбранного пункта должна появиться *.

Жмем s и сохраняем настройки.

Теперь все готово для компиляции QtAda.

Хочу отметить, что все вышеперечисленные действия нужно выполнять, если у ваш системный компилятор новее того, что поставляется вместе с gnat.

Качаем QtAda с официального сайта:

cd /tmp && wget -c http://download.qtada.com/qtada-gpl-3.0.0-20090423-3303.tar.gz

распаковываем архив:

cd /tmp && tar xfv qtada-gpl-3.0.0-20090423-3303.tar.gz

заходим в директорию с исходниками:

cd qtada-gpl-3.0.0-20090423-3303

Конфигурируем && компилируем && устанавливаем:

./configure -prefix=/opt/qtada && make && make install

После установки нужно обновить переменные окружения PATH и LD_LIBRARY_PATH:

export PATH=/opt/qtada/bin:$PATH

export LD_LIBRARY_PATH=/opt/qtada/lib:$LD_LIBRARY_PATH

Затем нужно указать компилятору где искать файл проекта QtAda.

Для этого нужно установить переменную окружения ADA_PROJECT_PATH:

export ADA_PROJECT_PATH=/opt/qtada/lib/gnat/

Все установки переменных окружения неплохо прописать в файл ~/.ada_rc

Еще необходимо сказать компилятору о том как, использовать amoc. Для этого создадим символическую ссылку:

ln -s /opt/qtada/share/gprconfig/amoc.xml /opt/gnat/share/gprconfig/

и обновим настройки компилятора:

gprconfig

Опять выбираем все нужные компиляторы, включая вновь появившийся Amoc.

Сохраняем.

Теперь QtAda установлена и готова для использования.

1/14/2009

Qt скоро будет доступна под LGPL

Компания Nokia официально объявила о том, что библиотека Qt начиная с версии 4.5 будет доступна еще и под лицензией LGPL. А это означает что ее можно будет использовать и в коммерческих продуктах. Предыдущие два варианта лицензии останутся.
Также они пообещали сделать репозитории Qt публично доступными.

Интересно как это повлияет на GTK?