Как скомпилировать Qgis с возможностью отладки под Windows

в 13:43, , рубрики: qgis, qt, qt creator, Геоинформационные сервисы, сборка проекта

Как скомпилировать Qgis с возможностью отладки под Windows - 1

По работе пришлось столкнутся с тем, что нужно было узнать, какие действия происходят в ядре QGIS. QGIS (Quantum GIS) — свободная кроссплатформенная геоинформационная система. Сама система разработана с помощью инструментария Qt. Через него я и решил собрать проект. Для этого я скачал исходники qgis с официального сайта и начал сборку. На самом сайте есть руководство по сборке с помощью Qt Creator. Было прочитано множество статей про сборку и отладку QGIS (некоторые даже толковые). Но ни в руководстве, ни на каких-либо ресурсах не нашел решения тех проблем, с которыми я столкнулся. Так родилась идея написать собственное руководство по сборке QuantumGIS для Windows систем использую Qt Creator.

Прежде чем собирать

Первоначально мы скачиваем и устанавливаем Qt Creator. Качаем с официального сайта. Я использовал скомпилированные библиотеки Qt. (Внимание! Qgis официально не поддерживает Qt 5. Лучше используйте Qt 4): берем отсюда. Ставим Microsoft Windows SDK for Windows 7 and .NET Framework 4 (ISO) (нужен для setupapi)
Кроме того, для отладки в Qt Creator необходим CDB (из пакета MS Debugging Tools). находится тут.

Так же скачиваем и устанавливаем:Cmake ,Flex и Bison. С официального сайта скачиваем OSGeo4W для своей версии: тут. Запускам его и выбираем: расширенная установка -> установить из интернета и жмем все далее.

Как скомпилировать Qgis с возможностью отладки под Windows - 2

Выберите следующие библиотеки: expat, fcgi, gdal, gdal-dev, iconv, PyQt4, Qt4-Devel, qwt-devel-Qt4, sip, curl, gsl, hdf5, proj, qScintilla2, Sqlite3, libspatialIndex-devel, geos, zlib. Ждем, когда установится.

Скачиваем исходники Qgis.

Подготовка для сборки

Я предполагаю, что у вас все получилось. Установили все что требуется и скачали исходный код. Запустите Qt Creator. Затем сделайте: Файл -> Открыть файл или проект. Используйте этот диалог, чтобы открыть файл CMakeLists.txt. Он находится в исходниках, у меня путь такой: D:qgis2.8.7 CMakeLists.txt. Далее вам будет предложено создать место сборки. Я создаю определенный каталог: D:/Quantum-Gis.
Далее вам предложат запустить Cmake параметры сборки. Мы запустим его со следующими параметрами: -DCMAKE_BUILD_TYPE=Debug.

Как скомпилировать Qgis с возможностью отладки под Windows - 3

После запуска Cmake мы укажем путь к папке где лежат исходники QGIS и путь в папку, в которую запишется конфигурация.

Как скомпилировать Qgis с возможностью отладки под Windows - 4

После этого нажмем «Configure» и выберем компилятор «NMake Makefiles» и оставляем отметку «Use default native compilers». Cmake будет проверять конфигурацию и наличие нужных компонентов (отмечено красным). Покажу свою конфигурацию.

BISON_EXECUTABLE C:/cygwin64/bin/bison.exe
CMAKE_INSTAL_PREFIX C:/Program Files/qgis2.8.7
EXPAT_INCLUDE_DIR C:/OSGeo4W64/include
EXPAT_LIBRARY C:/OSGeo4W64/lib/expat.lib
FLEX_EXECUTABLE C:/cygwin64/bin/flex.exe
GDAL_INCLUDE_DIR C:/OSGeo4W64/include
GDAL_LIBRARY C:/OSGeo4W64/lib/gdal_i.lib
GEOS_INCLUDE_DIR C:/OSGeo4W64/include
GEOS_LIBRARY C:/OSGeo4W64/lib/geos_c.lib
POSTGRESQL_INCLUDE_DIR C:/OSGeo4W64/include
POSTGRESQL_LIBRARY C:/OSGeo4W64/lib/libpq.lib
PROJ_INCLUDE_DIR C:/OSGeo4W64/include
PROJ_LIBRARY C:/OSGeo4W64/lib/proj.lib
PYRCC4_PROGRAM C:/OSGeo4W64/bin/pyrcc4.exe
PYTHON_INCLUDE_PATH C:/Python27/include
PYTHON_LIBRARY C:/Python27/libs/python27.lib;
PYUIC4_PROGRAM C:/OSGeo4W64/apps/Python27/Lib/site-packages/PyQt4/uic/pyuic.py
QSCINTILLA_INCLUDE_DIR C:/OSGeo4W64/include/qt4
QSCINTILLA_LIBRARY C:OSGeo4W64libqscintilla2.lib
QSCI_SIP_DIR C:OSGeo4W64include
QT_QMAKE_EXECUTABLE C:/Qt/qt-4.8.6-x64-msvc2010/qt-4.8.6-x64-msvc2010/bin/qmake.exe
QWT_INCLUDE_DIR C:/OSGeo4W64/include/qwt
QWT_LIBRARY C:/OSGeo4W64/lib/qwt5.lib
SETUPAPI_LIBRARY C:/Program Files (x86)/Windows Kits/8.1/Lib/winv6.3/um/x64/SetupAPI.Lib
SPATIALINDEX_INCLUDE_DIR C:/OSGeo4W64/include/spatialindex;C:/OSGeo4W64/include
SPATIALINDEX_LIBRARY C:/OSGeo4W64/lib/spatialindex-64.lib;C:/OSGeo4W64/lib/spatialite_i.lib;C:/OSGeo4W64/lib/spatialindex_c-64.lib
SPATIALLITE_INCLUDE_DIR C:/OSGeo4W64/libspatialite-4.3.0a/src/headers
SPATIALLITE_LIBRARY C:/OSGeo4W64/lib/spatialite.lib
SQLITE3_INCLUDE_DIR C:/OSGeo4W64/include
SQLITE3_LIBRARY C:/OSGeo4W64/sqlite3.lib
TXT2TAGS_EXECUTABLE TXT2TAGS_EXECUTABLE-NOTFOUND

Как скомпилировать Qgis с возможностью отладки под Windows - 5

Конфигурация должна проходить без ошибок. (Внимание! На папки рекомендую установить переменные среды, иначе придется все пути прописывать вручную). После успешной конфигурации нажимаем «Generate» и генерируем файлы конфигурации. Далее закрываем Cmake и возвращаемся в Qt Creator. Нажимаем кнопку «Завершить».

Сборка проекта

Теперь что касается самого проекта. Заходим на вкладку «Проект». Вверху расположена кнопка «Управление». В открывшемся окне на вкладке «Сборка и запуск» -> «Основное» указываем каталог проектов, например, D:Quantum-GIS. На вкладке Текстовый редактор -> Поведение Кодировкам файлов -> По умолчанию значение windows-1251 / CP1251. Далее переходим снова на вкладку «Сборка и запуск» -> «Компиляторы» и убеждаемся, что среди обнаруженных имеются хотя бы некоторые компиляторы из ниже представленных.

Как скомпилировать Qgis с возможностью отладки под Windows - 6

На вкладке «Отладчики» (здесь же) должны быть вот эти отладчики (версии могут различаться).

Как скомпилировать Qgis с возможностью отладки под Windows - 7

Далее выбираем вкладку «Qt Versions», нажимаем кнопку «Добавить» и указываем путь к установленной ранее библиотеке Qt C:Qt4.8.6binqmake.exe. В название профиля прописываем к примеру, Qt 4.8.6 MSVC2010 64bit.
Теперь можно сделать связку инструментов. Переходим на «Компоненты», нажимаем кнопку «Добавить» и в свойствах новой связки указываем компоненты. У меня они такие:

Как скомпилировать Qgis с возможностью отладки под Windows - 8
(компилятор и отладчик у Вас могут быть свои)

Закрываем «Параметры», предварительно нажав кнопку «Применить». Проект готов к сборке. Чтобы собрать его нужно нажать внизу на значок молотка. Компиляция должна проходить без ошибок.Если ошибок нет необходимо сбросить в созданную папку, куда скомпилировались файлы QGIS, связанные библиотеки:

expat.dll, freexl.dll, gdal200.dll, geos_c.dll, hdf5.dll, iconv.dll, jpeg.dll, jpeg12.dll, libcurl.dll, libpq.dll, libtiff.dll, libxml2.dll, ogdi.dll, proj.dll,qscintilla2.dll, QtCore4.dll, QtGui4.dll, QtNetwork4.dll, QtSql4.dll, QtSvg4.dll, qwt5.dll, QtXml4.dll, spatialindex-64.dll, spatialite.dll, sqlite3.dll, szip.dll, xerces-c_3_1.dll zlib.dll.

Все библиотеки находятся в папке C:OSGeo4W64bin, библиотеки Qt я подключал из скомпилированных библиотек. Далее копируем папку C:OSGeo4W64etc в папку с скомпилированными файлами QGIS, в моем случае: D: Quantum-GISoutput. Также копируем из C:OSGeo4W64bin два батника qgis.bat и o4w_env.bat в директорию D: Quantum-GISoutputbin. Вернемся к настройкам запуска Qgis в Qt cCreator. На вкладке «Проект» открываем вкладку «Запуск». Указываем директории, где лежит exe-файл QGIS и рабочую директорию.

Как скомпилировать Qgis с возможностью отладки под Windows - 9

Если QGIS запустился, то теперь вы можете отлаживать, нажатием кнопки с божьей коровкой. Наслаждайтесь.

Возможные ошибки

1. Библиотека Python. В официальном руководстве по сборке qgis рекомендуют выбирать установленную в osge4w библиотеку python27. У меня не получилось собрать с ней. Скачал отдельную библиотеку python27 с официального сайта Python. Заработало.
2. После установки Qt создайте переменную среду QTDIR. Если этого не сделать будут проблемы с библиотеками Qt, проект так и не сможет их найти. (тоже самое нужно сделать и с Qt_MOC, QT_RCC, QT_UIC но у меня заработало без этого).
3. Проблемы с библиотеками. Если вы собираете приложение в режиме выпуска, а библиотека в режиме отладки, то возникнут ошибки. Убедитесь, что и проект, и библиотека одной версии. (У меня такое было с библиотекой qwt. Компилятор выдавал QWidget: Must construct a QApplication before a QPaintDevice. Заменил версию библиотеки – заработало).

Надеюсь, что моя статья будет полезна. Собирал Qgis версии 2.8.7 на Windows 7 x64-битной системе.

Автор: Klass

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js