]> Creatis software - clitk.git/blob - vv/CMakeLists.txt
Initial revision
[clitk.git] / vv / CMakeLists.txt
1 cmake_minimum_required(VERSION 2.4)
2 #=========================================================
3 INCLUDE(${PROJECT_SOURCE_DIR}/cmake/common.cmake)
4 #=========================================================
5
6 #Set a reasonable build mode default if the user hasn't set any
7 if (NOT CMAKE_BUILD_TYPE)
8   set(CMAKE_BUILD_TYPE RelWithDebInfo)
9 endif (NOT CMAKE_BUILD_TYPE)
10
11 #=========================================================
12 # Find ITK (required)
13 FIND_PACKAGE(ITK)
14 IF(ITK_FOUND)
15   INCLUDE(${ITK_USE_FILE})
16 ELSE(ITK_FOUND)
17   MESSAGE(FATAL_ERROR
18           "Cannot build without ITK.  Please set ITK_DIR.")
19 ENDIF(ITK_FOUND)
20 #=========================================================
21
22 #=========================================================
23 # Find QT
24 FIND_PACKAGE(Qt4 REQUIRED)
25
26 #=========================================================
27 INCLUDE_DIRECTORIES(
28   ${QT_INCLUDES}
29   ${VTK_INCLUDE_DIR}
30   ${QT_INCLUDE_DIR}
31   ${QT_QTGUI_INCLUDE_DIR}
32   ${QT_QTCORE_INCLUDE_DIR}
33   ${CMAKE_CURRENT_BINARY_DIR}
34   ${CMAKE_CURRENT_SOURCE_DIR}
35   ../common
36   )
37
38 #=========================================================
39
40 #SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/bin)
41 #SET(LIBRARY_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH}/../lib)
42
43 #=========================================================
44 LINK_LIBRARIES (
45   #ITKIO
46   clitkCommon
47   clitkFilters
48   ${QT_QTCORE_LIBRARY}
49   ${QT_QTGUI_LIBRARY}
50   vtkCommon
51   vtkRendering
52   vtkIO
53   vtkFiltering
54   vtkGraphics
55   vtkWidgets
56   vtkImaging
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   QVTKWidget.cxx
73   QTreePushButton.cxx
74   vvResamplerDialog.cxx
75   vvSegmentationDialog.cxx
76   vvSurfaceViewerDialog.cxx
77   vvMainWindow.cxx
78   vvDeformationDialog.cxx
79   vvInit.cxx
80   vvImageWarp.cxx
81   nkitkXDRImageIOFactory.cxx  
82   nkitkXDRImageIOReader.cxx  
83   vvDeformableRegistration.cxx
84   vtkVOXImageWriter.cxx
85   vvInteractorStyleNavigator.cxx
86   vvSlicer.cxx
87   vvImageReader.cxx
88   vvImageReader.txx
89   vvImageWriter.cxx
90   vvImageWriter.txx
91   vvLandmarks.cxx
92   vvLandmarksGlyph.cxx
93   vvGlyphSource.cxx
94   vvGlyph2D.cxx
95   vvSlicerManager.cxx
96   vvSlicerManagerCommand.cxx
97   vvUtils.cxx
98   vvMaximumIntensityProjection.cxx
99   vvMesh.cxx
100   vvMeshActor.cxx
101   vvMeshReader.cxx
102   vvStructSelector.cxx
103   vvCropDialog.cxx
104   vvMidPosition.cxx
105   vvImageMapToWLColors.cxx
106   )
107
108 QT4_WRAP_CPP(vv_SRCS 
109   vvMainWindow.h 
110   QVTKWidget.h 
111   QTreePushButton.h 
112   vvInfoPanel.h 
113   vvLinkPanel.h 
114   vvOverlayPanel.h 
115   vvLandmarksPanel.h 
116   vvDocumentation.h  
117   vvHelpDialog.h  
118   vvProgressDialog.h 
119   vvQDicomSeriesSelector.h 
120   vvResamplerDialog.h
121   vvSegmentationDialog.h
122   vvSurfaceViewerDialog.h
123   vvDeformationDialog.h
124   vvSlicerManager.h
125   vvStructSelector.h
126   vvCropDialog.h
127   )
128
129 QT4_WRAP_UI(vv_UI_CXX 
130   qt_ui/vvMainWindow.ui 
131   qt_ui/vvInfoPanel.ui 
132   qt_ui/vvLinkPanel.ui 
133   qt_ui/vvOverlayPanel.ui 
134   qt_ui/vvLandmarksPanel.ui 
135   qt_ui/vvHelpDialog.ui 
136   qt_ui/vvDocumentation.ui 
137   qt_ui/vvProgressDialog.ui 
138   qt_ui/vvDicomSeriesSelector.ui 
139   qt_ui/vvSegmentationDialog.ui
140   qt_ui/vvSurfaceViewerDialog.ui
141   qt_ui/vvResamplerDialog.ui
142   qt_ui/vvDeformationDialog.ui
143   qt_ui/vvStructSelector.ui
144   qt_ui/vvCropDialog.ui
145   qt_ui/vvDummyWindow.ui #For testing
146   )
147
148 SET(vvUI_RCCS vvIcons.qrc)
149 QT4_ADD_RESOURCES(vv_SRCS ${vvUI_RCCS})
150
151 #=========================================================
152 #support for parallel deformable registration with OpenMP
153 IF(CMAKE_COMPILER_IS_GNUCC)
154   SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp -march=native")
155 ENDIF(CMAKE_COMPILER_IS_GNUCC)
156
157 #=========================================================
158
159 IF (CLITK_VV_USE_BDCM)
160   FIND_PACKAGE(bdcm)
161   IF(bdcm_FOUND)
162     INCLUDE(${bdcm_USE_FILE})
163   ELSE(bdcm_FOUND)
164     MESSAGE(FATAL_ERROR
165       "Cannot build without BDCM.  Please set BDCM_DIR.")
166   ENDIF(bdcm_FOUND)
167   #LINK_DIRECTORIES(/home/dsarrut/src/bdcm/build/)
168   #INCLUDE_DIRECTORIES(/home/dsarrut/src/bdcm/src2/)
169
170   FIND_PACKAGE(GDCM)
171   IF(GDCM_FOUND)
172     INCLUDE(${GDCM_USE_FILE})
173   ELSE(GDCM_FOUND)
174     MESSAGE(FATAL_ERROR
175       "Cannot build without GDCM.  Please set GDCM_DIR.")
176   ENDIF(GDCM_FOUND)
177
178 ENDIF (CLITK_VV_USE_BDCM)
179
180 IF(WIN32)
181   SET(EXE_ICON vvIcon.rc)
182 ENDIF(WIN32)
183
184 ADD_DEFINITIONS(-DQT_DLL)
185
186 ADD_DEFINITIONS(-DQT_THREAD_SUPPORT)
187
188 ADD_EXECUTABLE(vv ${vv_SRCS} vv.cxx ${vv_UI_CXX} ${EXE_ICON})
189 TARGET_LINK_LIBRARIES(vv ${QT_LIBRARIES} ${ITK_LIBRARIES} ${VTK_LIBRARIES} )
190
191 #test executable
192 #QT4_WRAP_CPP(VVS_MOC_OUTFILE vvs.h)
193 #QT4_WRAP_UI(VVS_UI_OUTFILE qt_ui/vvDummyWindow.ui)
194 #ADD_EXECUTABLE(vvs ${vv_SRCS} vvs.cxx ${vv_UI_CXX} ${VVS_UI_OUTFILE}
195 #${VVS_MOC_OUTFILE} ${EXE_ICON})
196 #TARGET_LINK_LIBRARIES(vvs ${QT_LIBRARIES} ${ITK_LIBRARIES} ${VTK_LIBRARIES} )
197
198 IF (CLITK_VV_USE_BDCM)
199   TARGET_LINK_LIBRARIES(vv ${QT_LIBRARIES} ${ITK_LIBRARIES} ${VTK_LIBRARIES} bdcm)
200 ELSE (CLITK_VV_USE_BDCM)
201   #TARGET_LINK_LIBRARIES(vv ${QT_LIBRARIES} ${ITK_LIBRARIES} ${VTK_LIBRARIES} )
202 ENDIF (CLITK_VV_USE_BDCM)
203
204 #IF( MINGW )
205 #    # resource compilation for MinGW
206 #    ADD_CUSTOM_COMMAND( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/vvIcons.o
207 #                        COMMAND windres.exe -I${CMAKE_CURRENT_SOURCE_DIR} -i${CMAKE_CURRENT_SOURCE_DIR}/vvIcons.qrc -o ${CMAKE_CURRENT_BINARY_DIR}/vvIcons.o )
208 #    SET(vv_SRCS ${vv_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/vvIcons.o)
209 #ENDIF (MINGW)
210
211 #IF( MINGW )
212 #  ADD_EXECUTABLE(vv WIN32 ${vv_SRCS} vv.cxx ${vv_UI_CXX} ${EXE_ICON})
213 #ELSE (MINGW)
214 #  ADD_EXECUTABLE(vv ${vv_SRCS} vv.cxx ${vv_UI_CXX} ${EXE_ICON})
215 #ENDIF (MINGW)
216 #TARGET_LINK_LIBRARIES(vv ${QT_LIBRARIES} ${ITK_LIBRARIES} ${VTK_LIBRARIES} QVTKWidgetPlugin )
217
218 #=========================================================
219 # Installation file
220 INSTALL(TARGETS vv vv
221   RUNTIME DESTINATION bin CONFIGURATIONS relwithdebinfo
222   LIBRARY DESTINATION lib CONFIGURATIONS relwithdebinfo
223   ARCHIVE DESTINATION lib CONFIGURATIONS relwithdebinfo)
224 INSTALL(FILES ${vv_HDRS} DESTINATION include)
225
226 IF(WIN32)
227   INSTALL (FILES ${CMAKE_CURRENT_SOURCE_DIR}/ducky.png DESTINATION bin)
228   INSTALL (FILES ${EXECUTABLE_OUTPUT_PATH}relwithdebinfo/vv.exe DESTINATION bin)
229   INSTALL (FILES ${QT_PLUGINS_DIR}/../bin/QtCore4.dll DESTINATION bin)
230   INSTALL (FILES ${QT_PLUGINS_DIR}/../bin/QtGui4.dll DESTINATION bin)
231   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkCommon.dll DESTINATION bin)
232   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtksys.dll DESTINATION bin)
233   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkRendering.dll DESTINATION bin)
234   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkGraphics.dll DESTINATION bin)
235   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkImaging.dll DESTINATION bin)
236   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkFiltering.dll DESTINATION bin)
237   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkGenericFiltering.dll DESTINATION bin)
238   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkIO.dll DESTINATION bin)
239   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/verdict.dll DESTINATION bin)
240   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/QVTK.dll DESTINATION bin)
241   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/QVTKWidgetPlugin.dll DESTINATION bin)
242   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkDICOMParser.dll DESTINATION bin)
243   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkexoIIc.dll DESTINATION bin)
244   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkexpat.dll DESTINATION bin)
245   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkmetaio.dll DESTINATION bin)
246   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkftgl.dll DESTINATION bin)
247   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkfreetype.dll DESTINATION bin)
248   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkGenericFiltering.dll DESTINATION bin)
249   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkHybrid.dll DESTINATION bin)
250   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkInfovis.dll DESTINATION bin)
251   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkjpeg.dll DESTINATION bin)
252   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtklibxml2.dll DESTINATION bin)
253   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkNetCDF.dll DESTINATION bin)
254   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkpng.dll DESTINATION bin)
255   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtktiff.dll DESTINATION bin)
256   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkViews.dll DESTINATION bin)
257   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkVolumeRendering.dll DESTINATION bin)
258   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkWidgets.dll DESTINATION bin)
259   INSTALL (FILES ${VTK_DIR}/bin/relwithdebinfo/vtkzlib.dll DESTINATION bin)
260 ENDIF(WIN32)
261
262 IF(UNIX)
263   INSTALL (FILES ${EXECUTABLE_OUTPUT_PATH}/vv DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE  OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE)
264   INSTALL (FILES ${CMAKE_CURRENT_SOURCE_DIR}/icons/ducky.png DESTINATION bin)
265   INSTALL (FILES ${EXECUTABLE_OUTPUT_PATH}vv DESTINATION bin)
266 ENDIF(UNIX)
267
268 #=========================================================
269 # CPack options
270 INCLUDE(InstallRequiredSystemLibraries)
271
272 SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "vv, the 4D slicer : let's jump into a new dimension !")
273 SET(CPACK_PACKAGE_VENDOR "Creatis, CLB/RIO Team")
274 SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ReadMe.txt")
275 SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/License.txt")
276 SET(CPACK_PACKAGE_VERSION_MAJOR "1")
277 SET(CPACK_PACKAGE_VERSION_MINOR "0")
278 SET(CPACK_PACKAGE_VERSION_PATCH "0")
279 SET(CPACK_PACKAGE_INSTALL_DIRECTORY "vv ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}")
280 IF(WIN32 AND NOT UNIX)
281   # There is a bug in NSI that does not handle full unix paths properly. Make
282   # sure there is at least one set of four (4) backlasshes.
283   SET(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\ducky.png")
284   SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin/relwithdebinfo\\\\vv.exe")
285   SET(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} The 4D slicer")
286   SET(CPACK_NSIS_HELP_LINK "http://www.creatis.insa-lyon.fr/rio")
287   SET(CPACK_NSIS_URL_INFO_ABOUT "http://www.creatis.insa-lyon.fr/rio")
288   SET(CPACK_NSIS_MODIFY_PATH ON)
289 ELSE(WIN32 AND NOT UNIX)
290   SET(CPACK_STRIP_FILES "bin/vv")
291   SET(CPACK_SOURCE_STRIP_FILES "")
292 ENDIF(WIN32 AND NOT UNIX)
293 SET(CPACK_PACKAGE_EXECUTABLES "vv" "vv")
294 INCLUDE(CPack)