View Issue Details Jump to Notes ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0000607CMakepublic2004-02-18 18:152004-04-22 17:08
ReporterBrendan 
Assigned ToBill Hoffman 
PrioritynormalSeveritymajorReproducibilityalways
StatusclosedResolutionfixed 
PlatformOSOS Version
Product Version 
Target VersionFixed in Version 
Summary0000607: Possible bug in FindGTK.cmake
DescriptionI have recently tried compiling vxl/vgui using gtk but without glut on a> Fedora core 1 machine. This has caused a link error because libgdk is> apparently dependent on libXi, but libXi is not included in the> dependencies in FindGTK.cmake. Here's an example error:> c++ -fPIC basic01_display_image.o -o> /home/brendan/vxl-1.0.0/bin/core/vgui/examples/basic01_display_image> -rdynamic -L/home/brendan/vxl-1.0.0/bin/lib> -L/home/brendan/vxl-1.0-beta/gtkglarea-1.2.2/gtkgl/lib -L/usr/X11R6/lib> -lgtkgl -lgtk -lgdk -lgmodule -lglib -lGLU -lGL -lX11 -lXext -lvgui> -lvnl_algo -lnetlib -lvnl -lvil1 -lvil -ljpeg -ltiff -lpng -lzlib -lvgl> -lvpl -lvbl -lvul -lgtkgl -lgtk -lgdk -lgmodule -lglib -lQv -lvcl -lm> -lGLU -lGL -lX11 -lXext -lX11 -lXext> -Wl,-rpath,/home/brendan/vxl-1.0.0/bin/lib:/home/brendan/vxl-1.0-beta/gtkglarea-1.2.2/gtkgl/lib:/usr/X11R6/lib> /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../libgdk.so: undefined> reference to `XGetDeviceMotionEvents'> /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../libgdk.so: undefined> reference to `XFreeDeviceList'> /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../libgdk.so: undefined> reference to `XQueryDeviceState'> /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../libgdk.so: undefined> reference to `XListInputDevices'> /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../libgdk.so: undefined> reference to `XFreeDeviceMotionEvents'> /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../libgdk.so: undefined> reference to `XFreeDeviceState'> /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../libgdk.so: undefined> reference to `XOpenDevice'> /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../libgdk.so: undefined> reference to `XSelectExtensionEvent'> /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../libgdk.so: undefined> reference to `XUngrabDevice'> /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../libgdk.so: undefined> reference to `XGrabDevice'> > I have attached a modified FindGTK.cmake (sourced from> $vxl/config/cmake/Modules/NewCMake/FindGTK.cmake) that solves the link> problem simply by adding libXi to the dependencies. Anyway, not sure if> this is a general problem or just my problem, but I thought I'd let you> know.

Attached file:
#
# try to find GTK (and glib) and GTKGLArea
#

# GTK_INCLUDE_DIR - Directories to include to use GTK
# GTK_LIBRARIES - Files to link against to use GTK
# GTK_FOUND - If false, don't try to use GTK

# don't even bother under WIN32
IF (UNIX)

  FIND_PATH( GTK_gtk_INCLUDE_DIR gtk/gtk.h
    /usr/include
    /usr/local/include
    /usr/openwin/share/include
    /usr/openwin/include
    /usr/X11R6/include
    /usr/include/X11
    /usr/X11R6/include/gtk12
    /usr/include/gtk-1.2
    /usr/local/include/gtk-1.2
    /opt/gnome/include
    ${GTK_gtk_INCLUDE_PATH}
  )

  # Some Linux distributions (e.g. Red Hat) have glibconfig.h
  # and glib.h in different directories, so we need to look
  # for both.
  # - Atanas Georgiev <atanas@cs.columbia.edu>

  FIND_PATH( GTK_glibconfig_INCLUDE_DIR glibconfig.h
    /usr/include
    /usr/local/include
    /usr/openwin/share/include
    /usr/local/include/glib12
    /usr/lib/glib/include
    /usr/local/lib/glib/include
    /opt/gnome/include
    /opt/gnome/lib/glib/include
    ${GTK_glibconfig_INCLUDE_PATH}
  )

  FIND_PATH( GTK_glib_INCLUDE_DIR glib.h
    /usr/include
    /usr/local/include
    /usr/openwin/share/include
    /usr/include/gtk-1.2
    /usr/local/include/glib12
    /usr/lib/glib/include
    /usr/include/glib-1.2
    /usr/local/include/glib-1.2
    /opt/gnome/include
    /opt/gnome/include/glib-1.2
    ${GTK_glib_INCLUDE_PATH}
  )

  FIND_PATH( GTK_gtkgl_INCLUDE_DIR gtkgl/gtkglarea.h
    /usr/include
    /usr/local/include
    /usr/openwin/share/include
    /opt/gnome/include
    ${GTK_gtkgl_INCLUDE_PATH}
  )

  FIND_LIBRARY( GTK_gtkgl_LIBRARY gtkgl
    /usr/lib
    /usr/local/lib
    /usr/openwin/lib
    /usr/X11R6/lib
    /opt/gnome/lib
  )

  #
  # The 12 suffix is thanks to the FreeBSD ports collection
  #

  FIND_LIBRARY( GTK_gtk_LIBRARY
    NAMES gtk gtk12
    PATHS /usr/lib
          /usr/local/lib
          /usr/openwin/lib
          /usr/X11R6/lib
          /opt/gnome/lib
  )

  FIND_LIBRARY( GTK_gdk_LIBRARY
    NAMES gdk gdk12
    PATHS /usr/lib
           /usr/local/lib
           /usr/openwin/lib
           /usr/X11R6/lib
           /opt/gnome/lib
  )

  FIND_LIBRARY( GTK_gmodule_LIBRARY
    NAMES gmodule gmodule12
    PATHS /usr/lib
           /usr/local/lib
           /usr/openwin/lib
           /usr/X11R6/lib
           /opt/gnome/lib
  )

  FIND_LIBRARY( GTK_glib_LIBRARY
    NAMES glib glib12
    PATHS /usr/lib
           /usr/local/lib
           /usr/openwin/lib
           /usr/X11R6/lib
           /opt/gnome/lib
  )

  FIND_LIBRARY( GTK_Xi_LIBRARY
    NAMES Xi
    PATHS /usr/lib
           /usr/local/lib
           /usr/openwin/lib
           /usr/X11R6/lib
           /opt/gnome/lib
  )

  IF(GTK_gtk_INCLUDE_DIR)
  IF(GTK_glibconfig_INCLUDE_DIR)
  IF(GTK_glib_INCLUDE_DIR)
  IF(GTK_gtkgl_INCLUDE_DIR)
  IF(GTK_gtk_LIBRARY)
  IF(GTK_glib_LIBRARY)
  IF(GTK_gtkgl_LIBRARY)

    # Assume that if gtk and glib were found, the other
    # supporting libraries have also been found.

    SET( GTK_FOUND "YES" )
    SET( GTK_INCLUDE_DIR ${GTK_gtk_INCLUDE_DIR}
                           ${GTK_glibconfig_INCLUDE_DIR}
                           ${GTK_glib_INCLUDE_DIR}
                           ${GTK_gtkgl_INCLUDE_DIR} )
    SET( GTK_LIBRARIES ${GTK_gtkgl_LIBRARY}
                        ${GTK_gtk_LIBRARY}
                        ${GTK_gdk_LIBRARY}
                        ${GTK_gmodule_LIBRARY}
                        ${GTK_glib_LIBRARY}
                        ${GTK_Xi_LIBRARY} )

  ENDIF(GTK_gtkgl_LIBRARY)
  ENDIF(GTK_glib_LIBRARY)
  ENDIF(GTK_gtk_LIBRARY)
  ENDIF(GTK_gtkgl_INCLUDE_DIR)
  ENDIF(GTK_glib_INCLUDE_DIR)
  ENDIF(GTK_glibconfig_INCLUDE_DIR)
  ENDIF(GTK_gtk_INCLUDE_DIR)

  MARK_AS_ADVANCED(
    GTK_gtkgl_LIBRARY
    GTK_glib_LIBRARY
    GTK_gtk_LIBRARY
    GTK_Xi_LIBRARY
    GTK_gtkgl_INCLUDE_DIR
    GTK_glibconfig_INCLUDE_DIR
    GTK_glib_INCLUDE_DIR
    GTK_gtk_INCLUDE_DIR
  )

ENDIF (UNIX)
TagsNo tags attached.
Attached Files

 Relationships

  Notes
(0000948)
Bill Hoffman (manager)
2004-04-22 17:08

OK, I checked in a version that I think has your change in it, give it a try. Next please use the Create Attachment button in the bug tracker.
Thanks for the fix.

 Issue History
Date Modified Username Field Change


Copyright © 2000 - 2018 MantisBT Team