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