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