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