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