]> Creatis software - clitk.git/blob - vv/CMakeLists.txt
binarize
[clitk.git] / vv / CMakeLists.txt
1 cmake_minimum_required(VERSION 2.4)
2 #=========================================================
3 INCLUDE(${PROJECT_SOURCE_DIR}/cmake/common.cmake)
4 #=========================================================
5
6 #Set a reasonable build mode default if the user hasn't set any
7 if (NOT CMAKE_BUILD_TYPE)
8   set(CMAKE_BUILD_TYPE RelWithDebInfo)
9 endif (NOT CMAKE_BUILD_TYPE)
10
11 #=========================================================
12 # Find ITK (required)
13 FIND_PACKAGE(ITK)
14 IF(ITK_FOUND)
15   INCLUDE(${ITK_USE_FILE})
16 ELSE(ITK_FOUND)
17   MESSAGE(FATAL_ERROR
18           "Cannot build without ITK.  Please set ITK_DIR.")
19 ENDIF(ITK_FOUND)
20 #=========================================================
21
22 #=========================================================
23 # Find QT
24 FIND_PACKAGE(Qt4 REQUIRED)
25
26 #=========================================================
27 INCLUDE_DIRECTORIES(
28   ${QT_INCLUDES}
29   ${VTK_INCLUDE_DIR}
30   ${QT_INCLUDE_DIR}
31   ${QT_QTGUI_INCLUDE_DIR}
32   ${QT_QTCORE_INCLUDE_DIR}
33   ${CMAKE_CURRENT_BINARY_DIR}
34   ${CMAKE_CURRENT_SOURCE_DIR}
35   ../common
36   ../tools
37   )
38
39 #=========================================================
40 # To avoid warning with some version
41 if(COMMAND cmake_policy)
42   cmake_policy(SET CMP0003 NEW)
43 endif(COMMAND cmake_policy)
44
45 #SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/bin)
46 #SET(LIBRARY_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH}/../lib)
47
48 #=========================================================
49 LINK_LIBRARIES (
50   #ITKIO
51   clitkCommon
52   #clitkGGO
53   clitkFilters
54   ${QT_QTCORE_LIBRARY}
55   ${QT_QTGUI_LIBRARY}
56   vtkCommon
57   vtkRendering
58   vtkIO
59   vtkFiltering
60   vtkGraphics
61   vtkWidgets
62   vtkImaging
63   )
64
65 LINK_DIRECTORIES(${QT_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR} )
66
67 #=========================================================
68
69 OPTION(CLITK_VV_USE_BDCM "Build vv with Dicom selector bdcm" OFF)
70
71 SET(vv_SRCS
72   vvInfoPanel.cxx
73   vvLinkPanel.cxx
74   vvOverlayPanel.cxx
75   vvLandmarksPanel.cxx
76   vvQProgressDialogITKCommand.cxx
77   vvQDicomSeriesSelector.cxx
78   QVTKWidget.cxx
79   QTreePushButton.cxx
80   vvResamplerDialog.cxx
81   vvSegmentationDialog.cxx
82   vvSurfaceViewerDialog.cxx
83   vvMainWindow.cxx
84   vvDeformationDialog.cxx
85   vvInit.cxx
86   vvImageWarp.cxx
87   nkitkXDRImageIOFactory.cxx  
88   nkitkXDRImageIOReader.cxx  
89   vvDeformableRegistration.cxx
90   vtkVOXImageWriter.cxx
91   vvInteractorStyleNavigator.cxx
92   vvSlicer.cxx
93   vvImageReader.cxx
94   vvImageReader.txx
95   vvImageWriter.cxx
96   vvImageWriter.txx
97   vvLandmarks.cxx
98   vvLandmarksGlyph.cxx
99   vvGlyphSource.cxx
100   vvGlyph2D.cxx
101   vvSlicerManager.cxx
102   vvSlicerManagerCommand.cxx
103   vvUtils.cxx
104   vvMaximumIntensityProjection.cxx
105   vvMesh.cxx
106   vvMeshActor.cxx
107   vvMeshReader.cxx
108   vvStructSelector.cxx
109   vvCropDialog.cxx
110   vvMidPosition.cxx
111   vvImageMapToWLColors.cxx
112   vvIntensityValueSlider.cxx
113   vvToolManager.cxx
114   vvToolCreatorBase.cxx
115   vvToolBinarize.cxx
116   vvToolInputSelectorWidget.cxx
117   vvImageContour.cxx
118   )
119
120 QT4_WRAP_CPP(vv_SRCS 
121   vvMainWindow.h 
122   QVTKWidget.h 
123   QTreePushButton.h 
124   vvInfoPanel.h 
125   vvLinkPanel.h 
126   vvOverlayPanel.h 
127   vvLandmarksPanel.h 
128   vvDocumentation.h  
129   vvHelpDialog.h  
130   vvProgressDialog.h 
131   vvQDicomSeriesSelector.h 
132   vvResamplerDialog.h
133   vvSegmentationDialog.h
134   vvSurfaceViewerDialog.h
135   vvDeformationDialog.h
136   vvSlicerManager.h
137   vvStructSelector.h
138   vvCropDialog.h
139   vvIntensityValueSlider.h
140   vvToolCreatorBase.h
141   vvToolBinarize.h
142   vvToolInputSelectorWidget.h
143   )
144
145 QT4_WRAP_UI(vv_UI_CXX 
146   qt_ui/vvMainWindow.ui 
147   qt_ui/vvInfoPanel.ui 
148   qt_ui/vvLinkPanel.ui 
149   qt_ui/vvOverlayPanel.ui 
150   qt_ui/vvLandmarksPanel.ui 
151   qt_ui/vvHelpDialog.ui 
152   qt_ui/vvDocumentation.ui 
153   qt_ui/vvProgressDialog.ui 
154   qt_ui/vvDicomSeriesSelector.ui 
155   qt_ui/vvSegmentationDialog.ui
156   qt_ui/vvSurfaceViewerDialog.ui
157   qt_ui/vvResamplerDialog.ui
158   qt_ui/vvDeformationDialog.ui
159   qt_ui/vvStructSelector.ui
160   qt_ui/vvCropDialog.ui
161   qt_ui/vvDummyWindow.ui #For testing
162   qt_ui/vvIntensityValueSlider.ui
163   qt_ui/vvToolBinarize.ui
164   qt_ui/vvToolInputSelectorWidget.ui
165   )
166
167 SET(vvUI_RCCS vvIcons.qrc)
168 QT4_ADD_RESOURCES(vv_SRCS ${vvUI_RCCS})
169
170 #=========================================================
171 #support for parallel deformable registration with OpenMP
172 IF(CMAKE_COMPILER_IS_GNUCC)
173   SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp -march=native")
174 ENDIF(CMAKE_COMPILER_IS_GNUCC)
175
176 #=========================================================
177
178 IF (CLITK_VV_USE_BDCM)
179   FIND_PACKAGE(bdcm)
180   IF(bdcm_FOUND)
181     INCLUDE(${bdcm_USE_FILE})
182   ELSE(bdcm_FOUND)
183     MESSAGE(FATAL_ERROR
184       "Cannot build without BDCM.  Please set BDCM_DIR.")
185   ENDIF(bdcm_FOUND)
186   #LINK_DIRECTORIES(/home/dsarrut/src/bdcm/build/)
187   #INCLUDE_DIRECTORIES(/home/dsarrut/src/bdcm/src2/)
188
189   FIND_PACKAGE(GDCM)
190   IF(GDCM_FOUND)
191     INCLUDE(${GDCM_USE_FILE})
192   ELSE(GDCM_FOUND)
193     MESSAGE(FATAL_ERROR
194       "Cannot build without GDCM.  Please set GDCM_DIR.")
195   ENDIF(GDCM_FOUND)
196
197 ENDIF (CLITK_VV_USE_BDCM)
198
199 IF(WIN32)
200   SET(EXE_ICON vvIcon.rc)
201 ENDIF(WIN32)
202
203 ADD_DEFINITIONS(-DQT_DLL)
204
205 ADD_DEFINITIONS(-DQT_THREAD_SUPPORT)
206
207 ADD_EXECUTABLE(vv ${vv_SRCS} vv.cxx ${vv_UI_CXX} ${EXE_ICON})
208 TARGET_LINK_LIBRARIES(vv ${QT_LIBRARIES} ${ITK_LIBRARIES} ${VTK_LIBRARIES} )
209
210 #test executable
211 #QT4_WRAP_CPP(VVS_MOC_OUTFILE vvs.h)
212 #QT4_WRAP_UI(VVS_UI_OUTFILE qt_ui/vvDummyWindow.ui)
213 #ADD_EXECUTABLE(vvs ${vv_SRCS} vvs.cxx ${vv_UI_CXX} ${VVS_UI_OUTFILE}
214 #${VVS_MOC_OUTFILE} ${EXE_ICON})
215 #TARGET_LINK_LIBRARIES(vvs ${QT_LIBRARIES} ${ITK_LIBRARIES} ${VTK_LIBRARIES} )
216
217 IF (CLITK_VV_USE_BDCM)
218   TARGET_LINK_LIBRARIES(vv ${QT_LIBRARIES} ${ITK_LIBRARIES} ${VTK_LIBRARIES} bdcm)
219 ELSE (CLITK_VV_USE_BDCM)
220   #TARGET_LINK_LIBRARIES(vv ${QT_LIBRARIES} ${ITK_LIBRARIES} ${VTK_LIBRARIES} )
221 ENDIF (CLITK_VV_USE_BDCM)
222
223 #IF( MINGW )
224 #    # resource compilation for MinGW
225 #    ADD_CUSTOM_COMMAND( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/vvIcons.o
226 #                        COMMAND windres.exe -I${CMAKE_CURRENT_SOURCE_DIR} -i${CMAKE_CURRENT_SOURCE_DIR}/vvIcons.qrc -o ${CMAKE_CURRENT_BINARY_DIR}/vvIcons.o )
227 #    SET(vv_SRCS ${vv_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/vvIcons.o)
228 #ENDIF (MINGW)
229
230 #IF( MINGW )
231 #  ADD_EXECUTABLE(vv WIN32 ${vv_SRCS} vv.cxx ${vv_UI_CXX} ${EXE_ICON})
232 #ELSE (MINGW)
233 #  ADD_EXECUTABLE(vv ${vv_SRCS} vv.cxx ${vv_UI_CXX} ${EXE_ICON})
234 #ENDIF (MINGW)
235 #TARGET_LINK_LIBRARIES(vv ${QT_LIBRARIES} ${ITK_LIBRARIES} ${VTK_LIBRARIES} QVTKWidgetPlugin )
236
237 #=========================================================
238 # Installation file
239 INSTALL(TARGETS vv vv
240   RUNTIME DESTINATION bin CONFIGURATIONS relwithdebinfo
241   LIBRARY DESTINATION lib CONFIGURATIONS relwithdebinfo
242   ARCHIVE DESTINATION lib CONFIGURATIONS relwithdebinfo)
243 INSTALL(FILES ${vv_HDRS} DESTINATION include)
244
245 IF(WIN32)
246   INSTALL (FILES ${CMAKE_CURRENT_SOURCE_DIR}/ducky.png DESTINATION bin)
247   INSTALL (FILES ${EXECUTABLE_OUTPUT_PATH}relwithdebinfo/vv.exe DESTINATION bin)
248   INSTALL (FILES ${QT_PLUGINS_DIR}/../bin/QtCore4.dll DESTINATION bin)
249   INSTALL (FILES ${QT_PLUGINS_DIR}/../bin/QtGui4.dll DESTINATION bin)
250   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkCommon.dll DESTINATION bin)
251   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtksys.dll DESTINATION bin)
252   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkRendering.dll DESTINATION bin)
253   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkGraphics.dll DESTINATION bin)
254   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkImaging.dll DESTINATION bin)
255   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkFiltering.dll DESTINATION bin)
256   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkGenericFiltering.dll DESTINATION bin)
257   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkIO.dll DESTINATION bin)
258   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/verdict.dll DESTINATION bin)
259   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/QVTK.dll DESTINATION bin)
260   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/QVTKWidgetPlugin.dll DESTINATION bin)
261   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkDICOMParser.dll DESTINATION bin)
262   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkexoIIc.dll DESTINATION bin)
263   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkexpat.dll DESTINATION bin)
264   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkmetaio.dll DESTINATION bin)
265   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkftgl.dll DESTINATION bin)
266   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkfreetype.dll DESTINATION bin)
267   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkGenericFiltering.dll DESTINATION bin)
268   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkHybrid.dll DESTINATION bin)
269   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkInfovis.dll DESTINATION bin)
270   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkjpeg.dll DESTINATION bin)
271   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtklibxml2.dll DESTINATION bin)
272   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkNetCDF.dll DESTINATION bin)
273   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkpng.dll DESTINATION bin)
274   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtktiff.dll DESTINATION bin)
275   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkViews.dll DESTINATION bin)
276   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkVolumeRendering.dll DESTINATION bin)
277   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkWidgets.dll DESTINATION bin)
278   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkzlib.dll DESTINATION bin)
279 ENDIF(WIN32)
280
281 IF(UNIX)
282   INSTALL (FILES ${EXECUTABLE_OUTPUT_PATH}/vv DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE  OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE)
283   INSTALL (FILES ${CMAKE_CURRENT_SOURCE_DIR}/icons/ducky.png DESTINATION bin)
284   INSTALL (FILES ${EXECUTABLE_OUTPUT_PATH}vv DESTINATION bin)
285 ENDIF(UNIX)
286
287 #=========================================================
288 # CPack options
289 INCLUDE(InstallRequiredSystemLibraries)
290
291 SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "vv, the 4D slicer : let's jump into a new dimension !")
292 SET(CPACK_PACKAGE_VENDOR "Creatis, CLB/RIO Team")
293 SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ReadMe.txt")
294 SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/License.txt")
295 SET(CPACK_PACKAGE_VERSION_MAJOR "1")
296 SET(CPACK_PACKAGE_VERSION_MINOR "0")
297 SET(CPACK_PACKAGE_VERSION_PATCH "0")
298 SET(CPACK_PACKAGE_INSTALL_DIRECTORY "vv ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}")
299 IF(WIN32 AND NOT UNIX)
300   # There is a bug in NSI that does not handle full unix paths properly. Make
301   # sure there is at least one set of four (4) backlasshes.
302   SET(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\ducky.png")
303   SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin/relwithdebinfo\\\\vv.exe")
304   SET(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} The 4D slicer")
305   SET(CPACK_NSIS_HELP_LINK "http://www.creatis.insa-lyon.fr/rio")
306   SET(CPACK_NSIS_URL_INFO_ABOUT "http://www.creatis.insa-lyon.fr/rio")
307   SET(CPACK_NSIS_MODIFY_PATH ON)
308 ELSE(WIN32 AND NOT UNIX)
309   SET(CPACK_STRIP_FILES "bin/vv")
310   SET(CPACK_SOURCE_STRIP_FILES "")
311 ENDIF(WIN32 AND NOT UNIX)
312 SET(CPACK_PACKAGE_EXECUTABLES "vv" "vv")
313 INCLUDE(CPack)