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