Russian Qt Forum
Май 02, 2024, 20:33 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: HowTo: Использование Qt Script Generator  (Прочитано 8154 раз)
asvil
Гость
« : Июль 22, 2010, 23:45 »

HowTo:Использование Qt Script Generator
(В рамках программы "Qt Script у кожную хату")

QtScriptGenerator (далее - Кугенератор) позволяет сделать доступным почти любой Qt или Qt-подобный класс в среде Qt Script.

Приступим:

1. Скачиваем исходный код qtscriptgenerator из моего репозитория:
Код:
git clone git@gitorious.org:~asvil/qt-labs/asvils-qtscriptgenerator.git qtscriptgenerator
cd qtscriptgenerator

2. Читаем readme и компилируем:
Код:
cd generator
qmake && make

3. Запускаем созданный на предыдущем шаге Кугенератор без параметров для генерации системы классов-оберток. Система классов-оберток - это система позволяющая использовать c++ классы в Qt Script. В последствие мы будем генерировать данную систему для своих классов.
Код:
./generator

4. Переходим в каталог с заготовленными Qt проектам для компиляции систем классов-оберток.
Код:
cd ../qtbindings

5. Если ваша сборка Qt содержит все модули можно сделать:
Код:
qmake && make
Иначе переходите в каталоги с названиями необходимых модулей и компилируйте:
Код:
cd qtscript_core
qmake && make

6. Полученные плагины-расширения для Qt Script располагаются в папке qtscriptgenerator/plugins/script. Необходимо папку 'script' с содержимым поместить рядом с исполняемым файлом вашего проекта или указать местоположения плагинов вызвав QCoreApplication::addLibraryPath();

7. В своем проекте после создания QScriptEngine вызвать QScriptEngine::importExtension("qt.core"), используя в качестве параметра нужный модуль.

* * *

Теперь давайте используем Кугенератор для своих личных классов используя CMake систему сборки. Предполагается, что классы скопилированы в библиотеку. Общий метод такой:

1. Скачиваем qtscripttemplate в ту же папку, где храниться Кугенератор.
Код:
git clone git@gitorious.org:qtscripttemplate/qtscripttemplate.git
cd qtscripttemplate

2. Создаем необходимые папки.
Код:
mkdir lib
mkdir include

3. В папку 'lib' копируем библиотеку. В папку 'include' заголовочные файлы библиотеки.

4. Настраиваем систему сборки, а таке систему генерируемых Кугенератором классов. Для этого:

- Открываем buildplugin/CMakeLists.txt

- Создаем переменную с имененм проекта:
   set (PROJECT YOUR_SCRIPT_PLUGIN_NAME)

- Создаем переменную с именем Qt Script расширения. Данное имя будет в последствие использоваться методом QScriptEngine::importExtension();
   set (QS_PACKAGE_NAME YOUR_PACKAGE_NAME)

- Находим строку: set(QT_USE_QTSCRIPT TRUE) и после нее вводим в данном стиле список используемых вашей библиотекой Qt модулей. Например, set(QT_USE_QTNETWORK TRUE) и т.д.

- Далее переходим к редактированию файла plugin_build.txt.in и снимаем комменатрий с используемых библиотекой Qt модулей.


Теперь мы будем настраивать систему классов экспортируемых библиотекой. Для этого:

- Открываем файл plugin_typesystem.xml.in и перечисляем экспортируемые классы, перечисления, пространствы имен с помощью соответсвующих тегов с атрибутами:

Пространство имен:
Код:
<namespace-type name="YourNamespace"/>

Перечисление:
Код:
 <enum-type name="Namespace::SomeEnum"/> или <enum-type name="SomeClass::SomeEnum"/> 

Имеющий предка QObject и макрос Q_OBJECT:
Код:
<object-type name="QObjectSubclass"/>

Не имеющий предка QObject, но имеющие конструктор копии и оператор присваивания:
Код:
<value-type name="NonQObjectClass"/>

Подробнее об этих тегах и их использовании можно узнать перейдя по данной ссылке: http://doc.qt.nokia.com/qtjambi-4.4/html/com/trolltech/qt/qtjambi-typesystem.html


Теперь запускаем процесс генерации проекта и затем компилируем полученные классы-обертки:

Код:
cmake buildplugin -DCMAKE_BUILD_TYPE=Release
make

Следите за генерацией классов. Кугенератор предупреждает о том, какие перечисления, члены, методы класса он не смог экспортировать. Перечисления чаще всего просто не добавлены в файл plugin_typesystem.xml.in, а члены и методы содержат в себе неизвестные типы, т.е. типы которые не представлены в вышеназванном файле.

Полученный Qt Script плагин можно найти в папке plugins/script и поступить с ним также, как поступали выше.

Для некоторых билиотек созданы соответсвующие ветки: log4qt, ncreport252, qserialdevice. Переключившись на данные ветки необходимо только скопировать заголовочные файлы и саму библиотеку. Например:

Код:
git branch --track origin/qserialdevice
mkdir lib
mkdir include
......................
cmake biuldplugin -DCMAKE_BUILD_TYPE=Release
make
« Последнее редактирование: Июль 24, 2010, 23:19 от xintrea » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.042 секунд. Запросов: 20.