[Insight-users] Re: FltkImageViewer Problem

Andy Eow vtkitk at hotmail.com
Thu, 19 Feb 2004 10:19:18 -0500


Hi Luis,

It works now ... thanks!!

Cheers,
Andy

----- Original Message ----- 
From: "Luis Ibanez" <luis.ibanez at kitware.com>
To: "Andy Eow" <eow at ai.mit.edu>
Cc: <Insight-users at itk.org>
Sent: Thursday, February 19, 2004 12:40 AM
Subject: Re: FltkImageViewer Problem


>
> Hi Andy,
>
> You are right, the undefined references that
> you have are the OPENGL libraries.
>
> You will understand this better if you look
> at the /Modules subdirectory of CMake and
> open FindOpenGl.cmake.
>
>
> What you are missing in your CMakeLists.txt
> file is  to add ${OPENGL_LIBRARIES} to your
> LINK_LIBRARIES command.
>
>
> Regards,
>
>
>
>     Luis
>
>
>
> ----------------------
> Andy Eow wrote:
>
> > Hi Luis,
> >
> > Adding the FLTK libraries to linking seems to have solved some of the
> > problems. However, it's still not able to link entirely. Here's the
latest
> > string of errors:
> >
> > Building dependencies. cmake.depends...
> > Building executable /home/DICOMViewer/DicomImageViewer...
> >
/home/InsightToolkit-1.4.0/Applications/InsightApplications/Auxiliary/FltkIm
> >
ageViewer/libITKFltkImageViewer.a(fltkImage2DViewerWindow.o)(.text+0x781):
> > In function `fltk::Image2DViewerWindow::draw()':
> > : undefined reference to `glViewport'
> >
/home/InsightToolkit-1.4.0/Applications/InsightApplications/Auxiliary/FltkIm
> >
ageViewer/libITKFltkImageViewer.a(fltkImage2DViewerWindow.o)(.text+0x7d6):
> > In function `fltk::Image2DViewerWindow::draw()':
> > : undefined reference to `glClearColor'
> >
/home/InsightToolkit-1.4.0/Applications/InsightApplications/Auxiliary/FltkIm
> >
ageViewer/libITKFltkImageViewer.a(fltkImage2DViewerWindow.o)(.text+0x7e2):
> > In function `fltk::Image2DViewerWindow::draw()':
> > : undefined reference to `glMatrixMode'
> > ...
> >
> >>From the looks of it, some gl library is missing because all errors
result
> > from undefined references to gl* libraries.
> > The following fltk libraries have already been included with the current
> > cmake:
> > 1. libfltk.a
> > 2. fluid
> > 3. libfltk_forms.a
> > 4. libfltk_gl.a
> > 5. libfltk_images.a
> >
> > And I've also included the following for opengl paths:
> > FIND_PACKAGE(OpenGL)
> > IF(OPENGL_INCLUDE_PATH)
> >    INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_PATH})
> > ENDIF(OPENGL_INCLUDE_PATH)
> >
> > What other libraries should be linked?
> >
> > Thank you very much. I really appreciate your help!
> >
> > Cheers,
> > Andy
> >
> >
> > ----- Original Message ----- 
> > From: "Luis Ibanez" <luis.ibanez at kitware.com>
> > To: "Andy Eow" <eow at ai.mit.edu>
> > Cc: <Insight-users at itk.org>
> > Sent: Wednesday, February 18, 2004 8:42 PM
> > Subject: Re: FltkImageViewer Problem
> >
> >
> >
> >>Hi Andy,
> >>
> >>Thanks for sending your CMakeLists.txt file.
> >>
> >>It seems that you are missing to add the FLTK
> >>libraries in your LINK_LIBRARIES command:
> >>
> >>You now have:
> >>
> >>
> >>>>>LINK_LIBRARIES (
> >>>>> ITKBasicFilters
> >>>>> ITKIO
> >>>>> ITKFltkImageViewer
> >>>>>)
> >>>>>
> >>
> >>Please add  ${FLTK_LIBRARIES}
> >>
> >>
> >>It should look like:
> >>
> >>
> >>LINK_LIBRARIES (
> >>   ITKBasicFilters
> >>   ITKIO
> >>   ITKFltkImageViewer
> >>   ${FLTK_LIBRARIES}
> >>)
> >>
> >>
> >>This variable contains a string with the
> >>names of the four FLTK libraries.
> >>
> >>
> >>Regards,
> >>
> >>
> >>   Luis
> >>
> >>
> >>---------------
> >>Andy Eow wrote:
> >>
> >>
> >>>Hi Luis,
> >>>
> >>>Thanks for your quick response.
> >>>
> >>>The lines you've suggested were already included in the first e-mail
and
> >>>still I got the errors. I've attached my CMakeLists.txt and Makefile
for
> >>>your reference. Please advise.
> >>>
> >>>Cheers,
> >>>Andy
> >>>
> >>>
> >>>----- Original Message ----- 
> >>>From: "Luis Ibanez" <luis.ibanez at kitware.com>
> >>>To: "Andy Eow" <eow at ai.mit.edu>
> >>>Cc: <Insight-users at itk.org>
> >>>Sent: Tuesday, February 17, 2004 3:16 AM
> >>>Subject: Re: FltkImageViewer Problem
> >>>
> >>>
> >>>
> >>>
> >>>>Hi Andy,
> >>>>
> >>>>You are missing to include the configuration
> >>>>for FLTK. Please add the following lines to
> >>>>your CMakeLists.txt file:
> >>>>
> >>>>
> >>>>   FIND_PACKAGE(FLTK)
> >>>>   IF(FLTK_FOUND)
> >>>>     INCLUDE_DIRECTORIES(${FLTK_INCLUDE_DIR})
> >>>>   ENDIF(FLTK_FOUND)
> >>>>
> >>>>then rerun CMake and provide the locations
> >>>>of all 6 FLTK components.
> >>>>
> >>>>Please look at the FAQ for details
> >>>>
> >>>>
> >>>
> >>>
> >
http://www.itk.org/cgi-bin/InsightFAQ/InsightFAQ?req=show&file=faq03.005.htp
> >
> >>>>
> >>>>Regards,
> >>>>
> >>>>
> >>>>
> >>>>   Luis
> >>>>
> >>>>
> >>>>
> >>>>----------------------
> >>>>
> >>>>Andy Eow wrote:
> >>>>
> >>>>
> >>>>
> >>>>>Hi Luis,
> >>>>>
> >>>>>I'm interested in writing a modified version of the DicomImageViewer
> >>>
> >>>that
> >>>
> >>>
> >>>>>comes with ITKApplications and hence want to copy the existing files
> >>>
> >>>into a
> >>>
> >>>
> >>>>>separate directory [/home/Code/DICOMViewer] for reference. However, I
> >>>
> >>>have
> >>>
> >>>
> >>>>>not been able to get DicomImageViewer to compile in the new directory
> >>>
> >>>after
> >>>
> >>>
> >>>>>copying. Read a previous post with the subject [Insight-users] Re:
> >>>>>/usr/bin/ld: cannot find -lITKFltkImageViewer and added the few lines
> >
> > to
> >
> >>>my
> >>>
> >>>
> >>>>>CMakeList.txt. Solved a few problems but gives the following error
now:
> >>>>>
> >>>>>Building dependencies. cmake.depends...
> >>>>>-- Using Buildname: Linux-i686-pc-linux-gnu-g++
> >>>>>-- Loading VTK CMake commands
> >>>>>-- Loading VTK CMake commands - done
> >>>>>Building object file DicomImageViewer.o...
> >>>>>Building executable /home/Code/DICOMViewer/DicomImageViewer...
> >>>>>DicomImageViewer.o(.text+0xc8): In function `main':
> >>>>>: undefined reference to `fl_file_chooser(char const*, char const*,
> >
> > char
> >
> >>>>>const*, int)'
> >>>>>DicomImageViewer.o(.text+0x2c3): In function `main':
> >>>>>: undefined reference to `Fl::run()'
> >>>>>
> >>>
> >>>
> >
DicomImageViewer.o(.gnu.linkonce.t._ZN4fltk13Image2DViewerIfE8SetImageEPKN3i
> >
> >>>>>tk5ImageIfLj2EEE+0x294): In function
> >>>>>`fltk::Image2DViewer<float>::SetImage(itk::Image<float, (unsigned)2>
> >>>>>const*)':
> >>>>>: undefined reference to `Fl_Valuator::value(double)'
> >>>>>
> >>>
> >>>
> >
DicomImageViewer.o(.gnu.linkonce.t._ZN4fltk13Image2DViewerIfE8SetImageEPKN3i
> >
> >>>>>tk5ImageIfLj2EEE+0x2ac): In function
> >>>>>`fltk::Image2DViewer<float>::SetImage(itk::Image<float, (unsigned)2>
> >>>>>const*)':
> >>>>>: undefined reference to `Fl_Valuator::value(double)'
> >>>>>
> >>>
> >>>
> >
DicomImageViewer.o(.gnu.linkonce.t._ZN4fltk13Image2DViewerIfE11RenderImageEd
> >
> >>>>>d+0x3c6): In function
`fltk::Image2DViewer<float>::RenderImage(double,
> >>>>>double)':
> >>>>>: undefined reference to `Fl_Widget::redraw()'
> >>>>>
> >>>
> >>>
> >
DicomImageViewer.o(.gnu.linkonce.t._ZN4fltk13Image2DViewerIfE11RenderImageEd
> >
> >>>>>d+0x3cb): In function
`fltk::Image2DViewer<float>::RenderImage(double,
> >>>>>double)':
> >>>>>: undefined reference to `Fl::check()'
> >>>>>
> >>>
> >>>
> >
/home/InsightToolkit-1.4.0/Applications/InsightApplications/Auxiliary/FltkIm
> >
>
>>>>>ageViewer/libITKFltkImageViewer.a(fltkImage2DViewerGUI.o)(.text+0x23b):
> >>>
> >>>In
> >>>
> >>>
> >>>>>function
`fltkImage2DViewerGUI::fltkImage2DViewerGUI[not-in-charge]()':
> >>>>>: undefined reference to `Fl_Group::end()'
> >>>>>
> >>>>>The list of errors go on pretty long so I've only attached a sample
> >>>
> >>>here.
> >>>
> >>>
> >>>>>I'm pretty sure that the necessary libraries are present because I
was
> >>>
> >>>able
> >>>
> >>>
> >>>>>to compile and run the DicomImageViewer that came with ITK. I'm
> >
> > guessing
> >
> >>>>>it's a path problem but I'm not too sure how to go about solving it.
> >>>
> >>>Please
> >>>
> >>>
> >>>>>advise.
> >>>>>
> >>>>>Thank you very much.
> >>>>>
> >>>>>Cheers,
> >>>>>Andy
> >>>>>
> >>>>>
> >>>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
>
>>>>------------------------------------------------------------------------
> >>>>
> >>>>CMAKE_MINIMUM_REQUIRED(VERSION 1.6)
> >>>>PROJECT(DICOMViewer)
> >>>>INCLUDE_REGULAR_EXPRESSION("^.*$")
> >>>>
> >>>># Tell CMake's FIND_PACKAGE command where to look for our Find<pkg>
> >>>># modules.
> >>>>SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
> >
> > ${ITK_DIR}/Applications/InsightApplications)
> >
> >>>># Don't build anything unless the version of CMake is high enough.
> >>>># The matching ELSE/ENDIF should be the last lines in the file.
> >>>>IF("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" GREATER 1.5)
> >>>>
> >>>>FIND_PACKAGE(ITK)
> >>>>IF(ITK_FOUND)
> >>>> INCLUDE(${ITK_USE_FILE})
> >>>>ELSE(ITK_FOUND)
> >>>> MESSAGE(FATAL_ERROR
> >>>>         "Cannot build InsightApplications without ITK.  Please set
> >
> > ITK_DIR.")
> >
> >>>>ENDIF(ITK_FOUND)
> >>>>
> >>>># Add an option to use or not use FLTK (http://www.fltk.org)
> >>>>OPTION(USE_FLTK "Use FLTK (The Fast Light Toolkit) for GUI (some
> >
> > applications need this)" ON)
> >
> >>>>IF(USE_FLTK)
> >>>> FIND_PACKAGE(FLTK)
> >>>> IF(FLTK_FOUND)
> >>>>   INCLUDE_DIRECTORIES(${FLTK_INCLUDE_DIR})
> >>>> ENDIF(FLTK_FOUND)
> >>>>ENDIF(USE_FLTK)
> >>>>
> >>>># The fluid-generated fltk sources have many warnings.  This macro
> >>>># will disable warnings for the generated files on some compilers.
> >>>>MACRO(ITK_DISABLE_FLTK_GENERATED_WARNINGS files)
> >>>> IF(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 1.6)
> >>>>   IF(CMAKE_COMPILER_IS_GNUCXX)
> >>>>     FOREACH(f ${files})
> >>>>       STRING(REGEX REPLACE "\\.fl$" ".cxx" SRC "${f}")
> >>>>       STRING(REGEX REPLACE ".*/([^/]*)$" "\\1" SRC "${SRC}")
> >>>>       SET_SOURCE_FILES_PROPERTIES(${SRC} PROPERTIES COMPILE_FLAGS -w)
> >>>>     ENDFOREACH(f)
> >>>>   ENDIF(CMAKE_COMPILER_IS_GNUCXX)
> >>>> ENDIF(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 1.6)
> >>>>ENDMACRO(ITK_DISABLE_FLTK_GENERATED_WARNINGS)
> >>>>
> >>>>LINK_LIBRARIES (
> >>>> ITKAlgorithms
> >>>> ITKCommon
> >>>> ITKBasicFilters
> >>>>)
> >>>>
> >>>># If the version of CMake was too old, complain and build nothing.
> >>>># These should be the last lines in this file.
> >>>>ELSE("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" GREATER 1.5)
> >>>> MESSAGE(SEND_ERROR
> >>>>         "This version of CMake is too old to build
> >
> > InsightApplications.  "
> >
> >>>>         "Please upgrade to CMake 1.6.")
> >>>>ENDIF("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" GREATER 1.5)
> >>>>
> >>>>###################
> >>>>
> >>>>FIND_PATH(InsightApplications_SOURCE_DIR CMakeList.txt)
> >>>>FIND_PATH(InsightApplications_BINARY_DIR CMakeCache.txt)
> >>>>
> >>>>INCLUDE_DIRECTORIES (
> >>>> ${InsightApplications_SOURCE_DIR}/Auxiliary/FltkImageViewer
> >>>> ${InsightApplications_BINARY_DIR}/Auxiliary/FltkImageViewer
> >>>>)
> >>>>
> >>>>LINK_DIRECTORIES(
> >>>> ${InsightApplications_BINARY_DIR}/Auxiliary/FltkImageViewer
> >>>>)
> >>>>
> >>>>###################
> >>>>
> >>>>LINK_LIBRARIES (
> >>>> ITKBasicFilters
> >>>> ITKIO
> >>>> ITKFltkImageViewer
> >>>>)
> >>>>
> >>>>ADD_EXECUTABLE( DicomImageViewer DicomImageViewer.cxx )
> >>
> >>
> >>
> >>
> >>
> >>
> >
> >
> >
>
>
>
>
>