]> Creatis software - clitk.git/blob - vv/CMakeLists.txt
- correct crop 2D bug
[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   vvResamplerDialog.cxx
75   vvSegmentationDialog.cxx
76   vvSurfaceViewerDialog.cxx
77   vvMainWindowBase.cxx
78   vvMainWindow.cxx
79   vvDeformationDialog.cxx
80   vvImageWarp.cxx
81   vvDeformableRegistration.cxx
82   vtkVOXImageWriter.cxx
83   vvInteractorStyleNavigator.cxx
84   vvSlicer.cxx
85   vvImageReader.cxx
86   vvImageReader.txx
87   vvImageWriter.cxx
88   vvImageWriter.txx
89   vvLandmarks.cxx
90   vvLandmarksGlyph.cxx
91   vvGlyphSource.cxx
92   vvGlyph2D.cxx
93   vvSlicerManager.cxx
94   vvSlicerManagerCommand.cxx
95   vvUtils.cxx
96   vvMaximumIntensityProjection.cxx
97   vvMesh.cxx
98   vvMeshActor.cxx
99   vvMeshReader.cxx
100   vvStructSelector.cxx
101   vvMidPosition.cxx
102   vvImageMapToWLColors.cxx
103   vvIntensityValueSlider.cxx
104   vvToolManager.cxx
105   vvToolCreatorBase.cxx
106   vvToolWidgetBase.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   )
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   vvResamplerDialog.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   vvToolBinarize.h
144   vvToolSimpleInputSelectorWidget.h
145   vvToolInputSelectorWidget.h
146   vvToolWidgetBase.h
147   vvToolCropImage.h
148   vvToolImageArithm.h
149   vvToolConvert.h
150   # vvToolStructureSetManager.h
151  #  vvStructureSetActor.h
152 #   vvROIActor.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/vvResamplerDialog.ui
168   qt_ui/vvDeformationDialog.ui
169   qt_ui/vvStructSelector.ui
170   qt_ui/vvDummyWindow.ui #For testing
171   qt_ui/vvIntensityValueSlider.ui
172   qt_ui/vvToolSimpleInputSelectorWidget.ui
173   qt_ui/vvToolInputSelectorWidget.ui
174   qt_ui/vvToolWidgetBase.ui
175 #  qt_ui/vvToolFoo.ui
176   qt_ui/vvToolCropImage.ui
177   qt_ui/vvToolBinarize.ui
178   qt_ui/vvToolImageArithm.ui
179   # qt_ui/vvToolStructureSetManager.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)