Проблема с компиляцией плагина

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
SimpleMo
Новоприбывший
Сообщения: 12
Зарегистрирован: 11 апр 2006, 15:44
Репутация: 0

Проблема с компиляцией плагина

Сообщение SimpleMo » 17 янв 2011, 16:55

Доброго времени суток!
Я новичок в написании плагинов для QGIS => скачал coding-compilation-guide (прошу прощения ща мой английский, пишу название по памяти :oops: ).
В этом документе был пример плагина на C++. Создал я в QT проект, полностью перенёс текст плагина из документа в файлы, которые предписывалось создать и попробовал собратьпроет встроенным в QT компилятором и сборщиком. Если всё правильно понял, то это mingw32 и g++. В результате получаю ошибку: "символ @ не подходит для препроцессора". Нахожу место возникновения - qgsgeometry.h Удивляюсь :D , комментирую пару строк - другая ошибка: "Id: процесс завершился с кодом 1"
В целом так. Вопрос: что это может быть и что с этим делать?
Заранее благодарю за советы.
Текст плагина и ошибок добавлю через несколько минут.
Вложения
QgsPointConverterPlugin_global.h
(348 байт) 759 скачиваний
qgspointconverterplugin.h
(1.41 КБ) 734 скачивания
qgspointconverterplugin.cpp
(8.88 КБ) 822 скачивания
Последний раз редактировалось SimpleMo 17 янв 2011, 22:31, всего редактировалось 1 раз.

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: Проблема с компиляцией плагина

Сообщение Дмитрий Барышников » 17 янв 2011, 17:54

Официально QGIS собирается под MS Visual C++. Соответственно библиотеки QGIS, скомпилированные под MS Visual C++, имеют другие зависимости чем ваш код скомпилированный под mingw32. Я думаю из-за этого.
This is currently also who the binary QGIS packages are made (earlier versions used MinGW).
http://www.qgis.org/wiki/Building_QGIS_ ... ual_Studio
Про плагины это отсюда я так понимаю?
http://www.qgis.org/wiki/Writing_C%2B%2B_Plugins

SimpleMo
Новоприбывший
Сообщения: 12
Зарегистрирован: 11 апр 2006, 15:44
Репутация: 0

Re: Проблема с компиляцией плагина

Сообщение SimpleMo » 17 янв 2011, 19:36

Bishop писал(а): http://www.qgis.org/wiki/Building_QGIS_ ... ual_Studio
Про плагины это отсюда я так понимаю?
http://www.qgis.org/wiki/Writing_C%2B%2B_Plugins
На самом деле, плагины я брал из этого документа qgis-1.5.0_coding-compilation_guide_en.pdf. Он во вложении. Вы советуете компилировать компилятором от Microsoft? А не будет ли при этом проблем с библиотеками QT?
Вложения
qgis-1.5.0_coding-compilation_guide_en.pdf
(699.91 КБ) 1562 скачивания

Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

Re: Проблема с компиляцией плагина

Сообщение Voltron » 17 янв 2011, 21:42

QGIS для Windows собирается в MS Visual Studio, проблем нет. Почитайте статью про компиляцию QGIS для Windows.

SimpleMo
Новоприбывший
Сообщения: 12
Зарегистрирован: 11 апр 2006, 15:44
Репутация: 0

Re: Проблема с компиляцией плагина

Сообщение SimpleMo » 17 янв 2011, 22:35

Небольшое пояснение: мне НЕ нужно собирать QGIS. Мне нужно собрать плагин для QGIS.

Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

Re: Проблема с компиляцией плагина

Сообщение Voltron » 17 янв 2011, 23:46

Собирайте.
Я просто указал на то, что при сборке MSVC проблем с библиотеками Qt не возникает.

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: Проблема с компиляцией плагина

Сообщение Дмитрий Барышников » 18 янв 2011, 12:53

SimpleMo писал(а):Небольшое пояснение: мне НЕ нужно собирать QGIS. Мне нужно собрать плагин для QGIS.
Если вы откомпилируете QGIS хуже не будет. Зато все версии библиотек как QGIS, так и вашего плагина будут одинаковые.

SimpleMo
Новоприбывший
Сообщения: 12
Зарегистрирован: 11 апр 2006, 15:44
Репутация: 0

Re: Проблема с компиляцией плагина

Сообщение SimpleMo » 19 янв 2011, 16:09

Спасибо всем за советы!
Я поступил так, как вы все пишите, т.е согласно инструкции, на которую ссылается Voltron, скачал OSeo4W (QT у меня уже был установлен), скачал всё необходимое для компилятора MS Visual C++, скачал cmake и libintl. Кстати, заметил вот что: в инструкции сказано, что нужно в настойках VC++ указать папку c:\OSGeo4W\include\qt4, но у меня папки qt4 там просто нет...
Хорошо, выполнил настройки на соответствующие папки Qt4, установленного ранее.
Попытался запустить cmake. В итоге получил сообщение, что мой Qt скомпилирован mingw. Что можно с этим сделать?


Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

Re: Проблема с компиляцией плагина

Сообщение Voltron » 19 янв 2011, 18:09

SimpleMo писал(а):Кстати, заметил вот что: в инструкции сказано, что нужно в настойках VC++ указать папку c:\OSGeo4W\include\qt4, но у меня папки qt4 там просто нет...
Скорее всего, не установлен пакет qt4-devel.
Только что сделал чистую установку OSGeo4W, указанная папка присутствует.

SimpleMo
Новоприбывший
Сообщения: 12
Зарегистрирован: 11 апр 2006, 15:44
Репутация: 0

Re: Проблема с компиляцией плагина

Сообщение SimpleMo » 19 янв 2011, 22:52

Так и есть. Видимо, поменялась структура зависимостей в OSGeo4W - в инструкции я не нашёл указаний на необходимость отметки этого пакета. Указал его явно - всё появилось. Завтра буду пробовать компилировать и собирать плагин ещё раз.

Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

Re: Проблема с компиляцией плагина

Сообщение Voltron » 20 янв 2011, 09:57

Структура зависимостей в этом плане не менялась, просто вы немного невнимательны. В статье об этом сказано. См. раздел 2 «Ключевые зависимости», пункт 2
Дополнительно, в группе Libs выбираем пакеты:
fftw-devel, gdal16-python, grass-devel-vc, gsl-devel, libjpeg-devel, libpng-devel, libpng-devel-vc, llibtiff-devel, qt4-devel, zlib-devel

SimpleMo
Новоприбывший
Сообщения: 12
Зарегистрирован: 11 апр 2006, 15:44
Репутация: 0

Re: Проблема с компиляцией плагина

Сообщение SimpleMo » 22 янв 2011, 18:23

Доброго времени суток и спасибо за помощь! QGis мне собрать удалось. Попробовал собрать свой плагин на том же компиляторе. Всё равно идут ошибки на библиотеки QGis. Похоже, что-то я не подключил к проекту. Вопрос - что именно? Лог компилятора и CMakeLists.txt прилагаю.
Вложения
CMakeLists.txt
(910 байт) 566 скачиваний
BuildLog.txt
(5.15 КБ) 776 скачиваний

Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

Re: Проблема с компиляцией плагина

Сообщение Voltron » 23 янв 2011, 13:55

Как я понял, модуль собираете отдельно, вне каталога QGIS. Попробуйте положить исходники в каталог src/plugins/<plugin_name> и добавить его в CMakeList.txt QGIS.

Еще можете попробовать добавить в свой CMakeList.txt

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

FIND_PACKAGE(QGIS REQUIRED)
IF (NOT QGIS_FOUND)
  MESSAGE (SEND_ERROR "QGIS dependency was not found!")
ENDIF (NOT QGIS_FOUND)
Правили поиска QGIS и пример использования можно посмотреть в svn

SimpleMo
Новоприбывший
Сообщения: 12
Зарегистрирован: 11 апр 2006, 15:44
Репутация: 0

Re: Проблема с компиляцией плагина

Сообщение SimpleMo » 23 янв 2011, 15:30

То есть, вы предлагаете собирать плагин вместе с QGIS?.. Попробую.
С момента написания моего последнего сообщения мне удалось побороть проблему со ссылками на библиотеки QGIS. Теперь они включаются в проект нормально. Кстати, добился я этого как раз используя код, который предлагает Voltron ;).
Натолкнулся теперь ещё на одну глюку: в процессе сборки в MS Visual C++ Express идут ошибки на генерированные QT4 файлы moc_<имя файла>.cxx. Система выдаёт сообщение о том, что dllimport не поддерживает статическое определение членов классов. Плагин, естественно, не собирается. Подскажите, что можно попробовать сделать с этим?
Заранее благодарю (в который раз ;)) за советы.

P.S. Товарищи гуру, скажите, это каждый раз такой напряг со сборкой плагинов возникает, или просто мне "повезло"?

Ответить

Вернуться в «QGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей