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