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