[GRASS-dev] [GRASS GIS] #2406: wxview compilation error

#2406: wxview compilation error
-------------------------+--------------------------------------------------
Reporter: martinl | Owner: grass-dev@…
     Type: defect | Status: new
Priority: normal | Milestone: 7.0.0
Component: Compiling | Version: svn-trunk
Keywords: wxview | Platform: Linux
      Cpu: Unspecified |
-------------------------+--------------------------------------------------
Compilation of wxview fails on Debian stable:

{{{
c++ -g -Wall -I/opt/src/grass/dist.x86_64-unknown-linux-gnu/include
-I/opt/src/grass/dist.x86_64-unknown-linux-gnu/include -I/usr/lib/x86_64
-linux-gnu/wx/include/base-unicode-release-2.8 -I/usr/include/wx-2.8
-D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -DwxUSE_GUI=0 -pthread
-DWXINTL_NO_GETTEXT_MACRO -DPACKAGE=\""grassmods"\"
-I/opt/src/grass/dist.x86_64-unknown-linux-gnu/include
-I/opt/src/grass/dist.x86_64-unknown-linux-gnu/include -o OBJ.x86_64
-unknown-linux-gnu/main.o -c main.cpp
In file included from main.cpp:41:0:
wximgview.h:9:23: error: invalid use of incomplete type ‘class wxFrame’
In file included from /usr/include/wx-2.8/wx/wx.h:27:0,
                  from main.cpp:34:
/usr/include/wx-2.8/wx/utils.h:50:28: error: forward declaration of ‘class
wxFrame’
In file included from main.cpp:41:0:
wximgview.h:12:5: error: ‘wxTimer’ does not name a type
wximgview.h:19:19: error: ‘wxSize’ does not name a type
wximgview.h:19:27: error: ISO C++ forbids declaration of ‘size’ with no
type [-fpermissive]
wximgview.h:23:17: error: ‘wxPaintEvent’ has not been declared
wximgview.h:24:16: error: ‘wxEraseEvent’ has not been declared
wximgview.h:25:15: error: ‘wxTimerEvent’ has not been declared
wximgview.h: In constructor ‘MyFrame::MyFrame(const int&)’:
wximgview.h:20:4: error: type ‘wxFrame’ is not a direct base of ‘MyFrame’
wximgview.h:20:43: error: ‘wxDefaultPosition’ was not declared in this
scope
main.cpp: In function ‘wxAppConsole* wxCreateApp()’:
main.cpp:45:1: error: cannot allocate an object of abstract type ‘MyApp’
In file included from main.cpp:41:0:
wximgview.h:33:7: note: because the following virtual functions are pure
within ‘MyApp’:
In file included from /usr/include/wx-2.8/wx/wx.h:26:0,
                  from main.cpp:34:
/usr/include/wx-2.8/wx/app.h:89:17: note: virtual int
wxAppConsole::OnRun()
main.cpp: At global scope:
main.cpp:47:1: error: incomplete type ‘wxFrame’ used in nested name
specifier
main.cpp:48:1: error: invalid use of non-static member function ‘void
MyFrame::erase(int&)’
main.cpp:48:1: error: ‘wxEraseEventHandler’ was not declared in this scope
main.cpp:49:1: error: invalid use of non-static member function ‘void
MyFrame::redraw(int&)’
main.cpp:49:1: error: ‘wxPaintEventHandler’ was not declared in this scope
main.cpp:50:30: error: invalid use of non-static member function ‘void
MyFrame::tick(int&)’
main.cpp:50:34: error: ‘EVT_TIMER’ was not declared in this scope
main.cpp:51:1: error: expected ‘}’ before ‘wxEventTableEntry’
main.cpp:51:1: error: expected ‘,’ or ‘;’ before ‘wxEventTableEntry’
main.cpp:51:1: error: expected declaration before ‘}’ token
main.cpp: In function ‘wxAppConsole* wxCreateApp()’:
main.cpp:45:1: warning: control reaches end of non-void function
[-Wreturn-type]
make: *** [OBJ.x86_64-unknown-linux-gnu/main.o] Error 1
}}}

BTW, is this application used by someone? Probably it could be disabled
from compilation, what do you think?

--
Ticket URL: <http://trac.osgeo.org/grass/ticket/2406&gt;
GRASS GIS <http://grass.osgeo.org>

#2406: wxview compilation error
-------------------------+--------------------------------------------------
Reporter: martinl | Owner: grass-dev@…
     Type: defect | Status: new
Priority: normal | Milestone: 7.0.0
Component: Compiling | Version: svn-trunk
Keywords: wxview | Platform: Linux
      Cpu: Unspecified |
-------------------------+--------------------------------------------------

Comment(by glynn):

Replying to [ticket:2406 martinl]:
> Compilation of wxview fails on Debian stable:
>
{{{
c++ ... -DwxUSE_GUI=0 ...
}}}
The wx-config script used by configure has disabled the GUI component of
wxWidgets.

If you have multiple versions of wxWidgets installed, pass the full path
to the correct wx-config script to the --with-wxwidgets= configure option.

If you only have a GUI-less version of wxWidgets, it appears that we don't
handle that correctly at present. As for whether we should care about that
...

  * It's uncertain whether the wximgview program will be retained (it's
unclear whether it has any advantage over the Python version in
scripts/wxpyimgview)
  * We'd need a custom test; LOC_CHECK_LIBS isn't going to work for a C++
class (or anything with C++ symbol mangling, for that matter).
  * How common is a GUI-less version of wxWidgets? Should it even be called
wxWidgets if it doesn't actually include any widgets?</snark>

--
Ticket URL: <http://trac.osgeo.org/grass/ticket/2406#comment:1&gt;
GRASS GIS <http://grass.osgeo.org>