[Insight-users] compile GaussianFilter outside InsightApplications-1.4

Luis Ibanez luis . ibanez at kitware . com
Fri, 05 Dec 2003 14:49:01 -0500


Hi George,

You are not allowed to move the Binary nor the Source
directories after your built is done.

If you decided to change the location of the source
or the binary directories you must reconfigure with
CMake and rebuild the project.

If what you want is to isolate one of the applications
from the InsightApplications tree you must make a number
of small modifications in the CMakeLists.txt file.


Please let us know if you have further questions.


Thanks



     Luis



-----------------
george he wrote:

> Hi,
> 
> I was able to install ITK and FLTK successfully,
> and compile the InsightApplications-1.4 downloaded 
> from the web. But after I moved the directory
> InsightApplications-1.4/GaussianFilter to another
> location. I wasn't able to compile it anymore.
> Anybody knows what was wrong?
> 
> I did try to combine the info from the CMakeLists.txt
> files in the directories InsightApplications-1.4 
> and InsightApplications-1.4/GaussianFilter together.
> 
> Most error messages are like:
> 
> In function `fltkImageViewerGUI::CreateGUI()':
> : undefined reference to
> `Fl_Value_Slider::Fl_Value_Slider[in-charge](int, int,
> int, int, char const*)'
> 
> In function `fltkImageViewerGUI::CreateGUI()':
> : undefined reference to `fl_define_FL_DIAMOND_BOX()'
> 
> In function `Fl_Menu_Bar::Fl_Menu_Bar[in-charge](int,
> int, int, int, char const*)':
> : undefined reference to `vtable for Fl_Menu_Bar'
> 
> Another question is, when I try
> FIND_PACKAGE(FltkImageViewer), why it was not found
> even though the file FindFltkImageViewer.cmake is in
> the directory ${InsightApplicationsDIR}?
> 
> Thanks,
> George
> 
> 
> Here is my new CMakeLists.txt file:
> 
> CMAKE_MINIMUM_REQUIRED(VERSION 1.6)
> PROJECT(GaussianFilter)
> INCLUDE_REGULAR_EXPRESSION("^.*$")
> 
> SET(InsightApplicationsDIR
> $ENV{HOME}/src/InsightApplications-1.4)
> SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
> ${InsightApplicationsDIR})
> MESSAGE("CMAKE_MODULE_PATH = ${CMAKE_MODULE_PATH}")
> SET(FltkImageViewerDIR
> ${InsightApplicationsDIR}/Auxiliary/FltkImageViewer)
> 
> # find ITK
> FIND_PACKAGE(ITK)
> IF(ITK_FOUND)
>   MESSAGE("ITK_USE_FILE = ${ITK_USE_FILE}")
>   INCLUDE(${ITK_USE_FILE})
> ELSE(ITK_FOUND)
>   MESSAGE(FATAL_ERROR "Cannot build GaussianFilter
> without ITK.  Please set ITK_DIR.")
> ENDIF(ITK_FOUND)
> 
> # find FltkImageViewer
> FIND_PACKAGE(FltkImageViewer)
> IF(FltkImageViewer_FOUND)
>   MESSAGE("FltkImageViewer_USE_FILE =
> ${FltkImageViewer_USE_FILE}")
>   INCLUDE(${FltkImageViewer_USE_FILE})
> ELSE(FltkImageViewer_FOUND)
>  
> INCLUDE($ENV{HOME}/src/InsightApplications-1.4/FindFltkImageViewer.cmake)
>   # MESSAGE(FATAL_ERROR "Cannot build GaussianFilter
> without FltkImageViewer.  Please set
> FltkImageViewer_DIR.")
> ENDIF(FltkImageViewer_FOUND)
> #
> INCLUDE($ENV{HOME}/src/InsightApplications-1.4/FindFltkImageViewer.cmake)
> INCLUDE_DIRECTORIES(${InsightApplicationsDIR}
> ${FltkImageViewerDIR})
> 
> # find OpenGL
> FIND_PACKAGE(OpenGL)
> IF(OPENGL_INCLUDE_PATH)
>  
> MESSAGE("OPENGL_INCLUDE_PATH=${OPENGL_INCLUDE_PATH}")
>   INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_PATH})
> ENDIF(OPENGL_INCLUDE_PATH)
> 
> # find FLTK
> OPTION(USE_FLTK "Use FLTK for GUI" ON)
> IF(USE_FLTK)
>   FIND_PACKAGE(FLTK)
>   IF(FLTK_FOUND)
>     MESSAGE("FLTK FOUND. FLTK_INCLUDE_DIR =
> ${FLTK_INCLUDE_DIR}")
>     INCLUDE_DIRECTORIES(${FLTK_INCLUDE_DIR}
> $ENV{HOME}/src/fltk-1.1.4/src)
>   ENDIF(FLTK_FOUND)
>   LINK_LIBRARIES (${FLTK_LIBRARIES})
> ENDIF(USE_FLTK)
> 
> 
> LINK_LIBRARIES (
> ITKAlgorithms
> ITKCommon
> ITKBasicFilters 
> )
> 
> # set include and lib directories for FltkImageViewer
> MESSAGE("FltkImageViewerDIR = ${FltkImageViewerDIR}.")
> INCLUDE_DIRECTORIES(${FltkImageViewerDIR}
> ${GaussianFilter_SOURCE_DIR}
> ${GaussianFilter_BINARY_DIR})
> LINK_DIRECTORIES(${FltkImageViewerDIR})
> 
> SET(GaussianFilter_SRCS 
>   liFilterConsole.cxx
>   liFilterConsoleBase.cxx 
>   GaussianFilter.cxx
>   )
> 
> SET(GaussianFilter2D_SRCS 
>   liFilterConsole2D.cxx
>   liFilterConsole2DBase.cxx 
>   GaussianFilter2D.cxx
>   )
> 
> MACRO(ADD_GUI_EXECUTABLE name sources)
>   ADD_EXECUTABLE(${name} ${sources})
> ENDMACRO(ADD_GUI_EXECUTABLE)
> 
> 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)
> 
> ADD_GUI_EXECUTABLE(GaussianFilter  
> "${GaussianFilter_SRCS}")
> ADD_GUI_EXECUTABLE(GaussianFilter2D
> "${GaussianFilter2D_SRCS}")
> 
> # Take the list of GUI files, generate .cxx and .h
> from them and add
> # them to the build process of the target
> FLTK_WRAP_UI(GaussianFilter liFilterConsoleGUI.fl)
> FLTK_WRAP_UI(GaussianFilter2D liFilterConsole2DGUI.fl)
> ITK_DISABLE_FLTK_GENERATED_WARNINGS(liFilterConsoleGUI.fl)
> ITK_DISABLE_FLTK_GENERATED_WARNINGS(liFilterConsole2DGUI.fl)
> 
> MESSAGE("FLTK_LIBRARIES=${FLTK_LIBRARIES},
> OPENGL_glu_LIBRARY=${OPENGL_glu_LIBRARY}")
> TARGET_LINK_LIBRARIES(GaussianFilter
> ${OPENGL_glu_LIBRARY}
>                       ${OPENGL_LIBRARIES}
> ITKFltkImageViewer ITKIO)
> TARGET_LINK_LIBRARIES(GaussianFilter2D
> ${OPENGL_glu_LIBRARY}
>                       ${OPENGL_LIBRARIES}
> ITKFltkImageViewer ITKIO)
> 
> 
>  
> 
> __________________________________
> Do you Yahoo!?
> Free Pop-Up Blocker - Get it now
> http://companion . yahoo . com/
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk . org
> http://www . itk . org/mailman/listinfo/insight-users
>