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