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