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