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