Сборка QGIS с помощью CMake под Windows

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Сборка QGIS с помощью CMake под Windows

Сообщение Максим Дубинин »

установил msys, скомпилировал GDAL, все вроде нормально
компилирую QGIS 0.11, использую CMake 2.6 под Windows (cmakesetup .., MinGW Makefiles), он не находит GDAL, пишет GDAL_LIBRARY-NOTFOUND

Вопрос, почему так? Можно конечно указать вручную, но это не только с GDAL проблема, с GEOS, PROJ тоже, хотелось бы разобраться.

Как я понимаю, это проблема или что-то не так дописано в CMakeLists.txt? Хотелось бы выяснить, как поправить CMakeLists. Прилагаю тот, что я использую (оригинальный из QGIS, без каких-либо исправлений).
Вложения
CMakeLists.txt
(13.89 КБ) 1127 скачиваний
пристегивайтесь, турбулентность прямо по курсу
Lynx
Интересующийся
Сообщения: 29
Зарегистрирован: 04 ноя 2008, 00:40
Репутация: 0

Re: Сборка QGIS с помощью CMake под Windows

Сообщение Lynx »

Дело в том, что cmake не всегда удается найти необходимые библиотеки и директории, тем более под windows. Еще имеет значение, то как реализован модуль поиска. Все модули cmake по поиску необходимых зависимостей можно найти в (дир установки qgis)/cmake.
Данную проблему можно решить двумя способами. Либо дописать необходимые пути в CMakeLists.txt, либо указать их в командной строке при запуске cmake. Мне кажется, второй способ предпочтительней. Еще для удобства командную строку лучше поместить в *.bat файл, либо написать shell скрипт, если под линуксом.
Подробнее о том, какие опции можно передавать cmake, можно посмотреть здесь
Последний раз редактировалось Lynx 07 янв 2009, 18:44, всего редактировалось 1 раз.
Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Сборка QGIS с помощью CMake под Windows

Сообщение Максим Дубинин »

спасибо, так и сделал (второй способ), вот, наверняка еще понадобится в будущем. Жаль что оказалось нельзя передавать параметры cmakesetup

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

cmake -G"MinGW Makefiles" -DPROJ_INCLUDE_DIR:PATH=C:\Gis\msys\local\include -DSQLITE3_INCLUDE_DIR:PATH=C:\Gis\msys\local\sqlite\include -DSQLITE3_LIBRARY:FILEPATH=C:\Gis\msys\local\sqlite\bin\libsqlite3-0.dll -DGDAL_INCLUDE_DIR:PATH=C:\Gis\msys\local\include -DGDAL_LIBRARY:FILEPATH=C:\Gis\msys\local\bin\libgdal-1.dll -DEXPAT_LIBRARY:FILEPATH=C:\Gis\msys\local\bin\libexpat-1.dll -DEXPAT_INCLUDE_DIR:PATH=C:\Gis\msys\local\include -DGEOS_LIBRARY:FILEPATH=C:\Gis\msys\local\bin\libgeos-3-0-3.dll -DGEOS_INCLUDE_DIR:PATH=C:\Gis\msys\local\include\geos -DPOSTGRES_INCLUDE_DIR:PATH=C:\Gis\msys\local\pgsql\include -DGRASS_PREFIX:PATH=C:\Gis\msys\local\grass-6.3.0 -DGSL_INCLUDE_DIR:PATH=C:\Gis\msys\local\include\gsl -DGSL_LIB:FILEPATH=C:\Gis\msys\local\bin\libgsl-0.dll  -DGSLCBLAS_LIB:FILEPATH=C:\Gis\msys\local\bin\libgslcblas-0.dll -DCMAKE_CXX_FLAGS:STRING+=-DGEOS_INLINE ..
пристегивайтесь, турбулентность прямо по курсу
Dorofeev
Активный участник
Сообщения: 194
Зарегистрирован: 08 фев 2007, 23:29
Репутация: 1
Откуда: Симферополь
Контактная информация:

Re: Сборка QGIS с помощью CMake под Windows

Сообщение Dorofeev »

А зачем так мучатся, в состав cmake под windows входит утилита с GUI cmakesetup-gui, где можно указать пути к зависимостям. Кстати в SVN версия 1.0 уже помечена как стабильная и и вроде она доступна для скачивания в бинарниках.
Lynx
Интересующийся
Сообщения: 29
Зарегистрирован: 04 ноя 2008, 00:40
Репутация: 0

Re: Сборка QGIS с помощью CMake под Windows

Сообщение Lynx »

Dorofeev писал(а):в состав cmake под windows входит утилита с GUI cmakesetup-gui, где можно указать пути к зависимостям
Да, это тоже вариант, но после каждого удаления кэша, придется указывать пути к зависимостям снова. А это не всегда удобно.
Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Сборка QGIS/GDAL с помощью CMake под Windows

Сообщение Максим Дубинин »

Да, есть. Только вы попробуйте ей раз 10 передать по 10 путей. Я не нашел как ей переменные передавать, поэтому использую cmake.
пристегивайтесь, турбулентность прямо по курсу
Dorofeev
Активный участник
Сообщения: 194
Зарегистрирован: 08 фев 2007, 23:29
Репутация: 1
Откуда: Симферополь
Контактная информация:

Re: Сборка QGIS/GDAL с помощью CMake под Windows

Сообщение Dorofeev »

А зачем 10 раз удалять кеши и снова конфигурировать ? Один раз передал, сгенерил make файлы и компилирую сколько угодно раз через make && make install.
Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Сборка QGIS/GDAL с помощью CMake под Windows

Сообщение Максим Дубинин »

ох если бы ты сразу все компилировалось, тогда да, а так мучаться приходится (мне по крайней мере), но это мы отвлеклись от темы.

Я вот с такой теперь борюсь ошибкой:

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

In file included from c:/msys/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../inc
lude/windows.h:50,
                 from c:/msys/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../inc
lude/rpc.h:2,
                 from c:/msys/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../inc
lude/wtypes.h:1,
                 from sip/QtCore/qcoreapplication.sip:66:
c:/msys/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winbase.h:1663: e
rror: declaration of C function `LONG InterlockedCompareExchange(volatile LONG*,
 LONG, LONG)' conflicts with
C:/DevTools/Qt-OpenSource/include/QtCore/../../src/corelib/arch/qatomic_windows.
h:393: error: previous declaration `long int InterlockedCompareExchange(long int
*, long int, long int)' here
c:/msys/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winbase.h:1667: e
rror: declaration of C function `LONG InterlockedDecrement(volatile LONG*)' conf
licts with
C:/DevTools/Qt-OpenSource/include/QtCore/../../src/corelib/arch/qatomic_windows.
h:395: error: previous declaration `long int InterlockedDecrement(long int*)' he
re
c:/msys/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winbase.h:1668: e
rror: declaration of C function `LONG InterlockedExchange(volatile LONG*, LONG)'
 conflicts with
C:/DevTools/Qt-OpenSource/include/QtCore/../../src/corelib/arch/qatomic_windows.
h:396: error: previous declaration `long int InterlockedExchange(long int*, long
 int)' here
c:/msys/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winbase.h:1672: e
rror: declaration of C function `LONG InterlockedExchangeAdd(volatile LONG*, LON
G)' conflicts with
C:/DevTools/Qt-OpenSource/include/QtCore/../../src/corelib/arch/qatomic_windows.
h:397: error: previous declaration `long int InterlockedExchangeAdd(long int*, l
ong int)' here
c:/msys/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winbase.h:1676: e
rror: declaration of C function `LONG InterlockedIncrement(volatile LONG*)' conf
licts with
C:/DevTools/Qt-OpenSource/include/QtCore/../../src/corelib/arch/qatomic_windows.
h:394: error: previous declaration `long int InterlockedIncrement(long int*)' he
re
mingw32-make[1]: *** [sipQtCorecmodule.o] Error 1
mingw32-make[1]: Leaving directory `C:/msys/local/src/PyQt-win-gpl-4.4.2/QtCore'

mingw32-make: *** [all] Error 2
пристегивайтесь, турбулентность прямо по курсу
Lynx
Интересующийся
Сообщения: 29
Зарегистрирован: 04 ноя 2008, 00:40
Репутация: 0

Re: Сборка QGIS/GDAL с помощью CMake под Windows

Сообщение Lynx »

Если декларации функций дублируют друг друга, то может быть в одном из них за комментировать их. Не уверен, что это поможет, а скорее приведет к новым ошибкам, но попробовать можно.
Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Сборка QGIS/GDAL с помощью CMake под Windows

Сообщение Максим Дубинин »

Не, копание в самом исходном коде мне врядли поможет, попытаюсь найти что изменилось с последний установки, ведь раньше нормально устанавливалось.

UPD: Победа! Обратите внимание, установка MinGW 5.1.4 последней версии с набором библиотек current приводит к тому, что PyQT не компилируется!

Итак, вот с таким набором завимостей PyQT соберется нормально (previous)

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

[previous]
runtime=mingw-runtime-3.14.tar.gz|5420
w32api=w32api-3.11.tar.gz|14490
binutils=binutils-2.16.91-20060119-1.tar.gz|15850
core=gcc-core-3.4.2-20040916-1.tar.gz|8627
gpp=gcc-g++-3.4.2-20040916-1.tar.gz|16542
g77=gcc-g77-3.4.2-20040916-1.tar.gz|5158
ada=gcc-ada-3.4.2-20040916-1.tar.gz|33333
java=gcc-java-3.4.2-20040916-1.tar.gz|45547
objc=gcc-objc-3.4.2-20040916-1.tar.gz|4555
make=mingw32-make-3.81-2.tar.gz|720
а вот с таким будет вылетать с ошибкой, которую я указывал выше

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

 [current]
runtime=mingwrt-3.15.1-mingw32.tar.gz|560294
w32api=w32api-3.12-mingw32-dev.tar.gz|14500
runtime-dev=mingwrt-3.15.1-mingw32-dev.tar.gz|552522
runtime-dll=mingwrt-3.15.1-mingw32-dll.tar.gz|6903
binutils=binutils-2.17.50-20060824-1.tar.gz|21940
core=gcc-core-3.4.5-20060117-3.tar.gz|7712
gpp=gcc-g++-3.4.5-20060117-3.tar.gz|15480
g77=gcc-g77-3.4.5-20060117-3.tar.gz|5272
ada=gcc-ada-3.4.5-20060117-3.tar.gz|33860
java=gcc-java-3.4.5-20060117-3.tar.gz|43160
objc=gcc-objc-3.4.5-20060117-3.tar.gz|3720
make=mingw32-make-3.81-20080326-2.tar.gz|727
пристегивайтесь, турбулентность прямо по курсу
Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Сборка QGIS с помощью CMake под Windows

Сообщение Максим Дубинин »

изложенная выше хитрость помогла собрать PyQT, но QGIS все равно, хоть и конфигурируется, но собираться не хочет. Если кто-то может взглянуть опытным взглядом, буду признателен.
Вложения
make.txt
(23.71 КБ) 1241 скачивание
cmake.txt
(3.66 КБ) 1107 скачиваний
пристегивайтесь, турбулентность прямо по курсу
Dorofeev
Активный участник
Сообщения: 194
Зарегистрирован: 08 фев 2007, 23:29
Репутация: 1
Откуда: Симферополь
Контактная информация:

Re: Сборка QGIS с помощью CMake под Windows

Сообщение Dorofeev »

используйте более древнюю версию geos http://download.osgeo.org/geos/geos-2.2.3.tar.bz2
Расскажите как удалось собрать PyQT, у меня при компиляции одной из библиотек вылетала ошибка, что cmd.exe не может обработать слишком длинную строку
Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Сборка QGIS с помощью CMake под Windows

Сообщение Максим Дубинин »

2.2.3 как-то не хочется, есть же 3.0.0 и должно же работать
про PyQT вот здесь
пристегивайтесь, турбулентность прямо по курсу
Ответить

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

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

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