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