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