[Qgis-user] building qgis 2.8.1 against grass 7
Donovan Cameron
sault.don at gmail.com
Wed Mar 11 10:27:22 PDT 2015
Morning,
I'm attempting to compile the QGIS 2.8.1 grass plugin against GRASS
7.0.0 on Arch Linux 64bit.
I read somewhere (maybe GIS.se?) that the GRASS plugin in QGIS doesn't
have full functionality and a kickstarter/crowdfunding process could be
underway to get it up to par, but in the meantime it was also mentioned
it's still possible to use the toolbar to load grass 7 layers into the
qgis canvas.
GDAL 1.11.2 is installed and so is gdal-grass plugin using some patches
to get GDAL working with grass 7.
I'm using the following cmake options in the QGIS build:
-DWITH_GRASS=ON
-DGRASS_PREFIX=/opt/grass
-DGRASS_INCLUDE_DIR=/opt/grass/include
But QGIS fails to build with the following error:
Scanning dependencies of target qgisgrass
[ 50%] Building CXX object
src/providers/grass/CMakeFiles/qgisgrass.dir/qgsgrass.cpp.o
/tmp/makepkg/qgis/src/qgis/src/providers/grass/qgsgrass.cpp: In static
member function ‘static void QgsGrass::setMapset(QString, QString,
QString)’:
/tmp/makepkg/qgis/src/qgis/src/providers/grass/qgsgrass.cpp:383:51:
error: ‘G__setenv’ was not declared in this scope
G__setenv( "GISDBASE", gisdbase.toUtf8().data() );
^
/tmp/makepkg/qgis/src/qgis/src/providers/grass/qgsgrass.cpp:392:30:
error: ‘G_available_mapsets’ was not declared in this scope
ms = G_available_mapsets();
^
/tmp/makepkg/qgis/src/qgis/src/providers/grass/qgsgrass.cpp: In static
member function ‘static QString QgsGrass::openMapset(QString, QString,
QString)’:
/tmp/makepkg/qgis/src/qgis/src/providers/grass/qgsgrass.cpp:611:46:
error: ‘G__setenv’ was not declared in this scope
G__setenv( "GISRC", mGisrc.toUtf8().data() );
^
/tmp/makepkg/qgis/src/qgis/src/providers/grass/qgsgrass.cpp: In static
member function ‘static QString QgsGrass::closeMapset()’:
/tmp/makepkg/qgis/src/qgis/src/providers/grass/qgsgrass.cpp:657:39:
error: ‘G__setenv’ was not declared in this scope
G__setenv( "GISRC", ( char * ) "" );
^
/tmp/makepkg/qgis/src/qgis/src/providers/grass/qgsgrass.cpp: In static
member function ‘static bool QgsGrass::region(QString, QString, QString,
Cell_head*)’:
/tmp/makepkg/qgis/src/qgis/src/providers/grass/qgsgrass.cpp:1082:83:
error: ‘G__get_window’ was not declared in this scope
G__get_window( window, ( char * ) "", ( char * ) "WIND",
mapset.toUtf8().data() );
^
/tmp/makepkg/qgis/src/qgis/src/providers/grass/qgsgrass.cpp: In static
member function ‘static bool QgsGrass::mapRegion(int, QString, QString,
QString, QString, Cell_head*)’:
/tmp/makepkg/qgis/src/qgis/src/providers/grass/qgsgrass.cpp:1268:94:
error: ‘G__get_window’ was not declared in this scope
G__get_window( window, ( char * ) "windows", map.toUtf8().data(),
mapset.toUtf8().data() );
^
src/providers/grass/CMakeFiles/qgisgrass.dir/build.make:60: recipe for
target 'src/providers/grass/CMakeFiles/qgisgrass.dir/qgsgrass.cpp.o' failed
make[2]: ***
[src/providers/grass/CMakeFiles/qgisgrass.dir/qgsgrass.cpp.o] Error 1
CMakeFiles/Makefile2:1251: recipe for target
'src/providers/grass/CMakeFiles/qgisgrass.dir/all' failed
make[1]: *** [src/providers/grass/CMakeFiles/qgisgrass.dir/all] Error 2
Makefile:137: recipe for target 'all' failed
make: *** [all] Error 2
So I'm not sure what the hiccup is exactly. GRASS 7 is installed and
runs fine outside of QGIS, but maybe it's missing some environment
variables (like GISRC or GISDBASE) that QGIS needs to compile against it?
Donovan
More information about the Qgis-user
mailing list