1 cmake_minimum_required(VERSION 2.4)
2 #=========================================================
3 INCLUDE(${PROJECT_SOURCE_DIR}/cmake/common.cmake)
4 #=========================================================
8 INCLUDE(${ITK_USE_FILE})
11 "Cannot build without ITK. Please set ITK_DIR.")
13 #=========================================================
15 #=========================================================
17 FIND_PACKAGE(Qt4 REQUIRED)
19 #=========================================================
24 ${QT_QTGUI_INCLUDE_DIR}
25 ${QT_QTCORE_INCLUDE_DIR}
26 ${CMAKE_CURRENT_BINARY_DIR}
27 ${CMAKE_CURRENT_SOURCE_DIR}
32 #=========================================================
33 # To avoid warning with some version
34 if(COMMAND cmake_policy)
35 cmake_policy(SET CMP0003 NEW)
36 endif(COMMAND cmake_policy)
38 #SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/bin)
39 #SET(LIBRARY_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH}/../lib)
41 #=========================================================
59 LINK_DIRECTORIES(${QT_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR} )
61 #=========================================================
63 OPTION(CLITK_VV_USE_BDCM "Build vv with Dicom selector bdcm" OFF)
70 vvQProgressDialogITKCommand.cxx
71 vvQDicomSeriesSelector.cxx
74 vvSegmentationDialog.cxx
75 vvSurfaceViewerDialog.cxx
77 vvDeformationDialog.cxx
80 nkitkXDRImageIOFactory.cxx
81 nkitkXDRImageIOReader.cxx
82 vvDeformableRegistration.cxx
84 vvInteractorStyleNavigator.cxx
95 vvSlicerManagerCommand.cxx
97 vvMaximumIntensityProjection.cxx
104 vvImageMapToWLColors.cxx
105 vvIntensityValueSlider.cxx
107 vvToolCreatorBase.cxx
109 vvToolInputSelectorWidget.cxx
123 vvQDicomSeriesSelector.h
125 vvSegmentationDialog.h
126 vvSurfaceViewerDialog.h
127 vvDeformationDialog.h
131 vvIntensityValueSlider.h
134 vvToolInputSelectorWidget.h
137 QT4_WRAP_UI(vv_UI_CXX
138 qt_ui/vvMainWindow.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
159 SET(vvUI_RCCS vvIcons.qrc)
160 QT4_ADD_RESOURCES(vv_SRCS ${vvUI_RCCS})
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)
168 #=========================================================
170 IF (CLITK_VV_USE_BDCM)
173 INCLUDE(${bdcm_USE_FILE})
176 "Cannot build without BDCM. Please set BDCM_DIR.")
178 #LINK_DIRECTORIES(/home/dsarrut/src/bdcm/build/)
179 #INCLUDE_DIRECTORIES(/home/dsarrut/src/bdcm/src2/)
183 INCLUDE(${GDCM_USE_FILE})
186 "Cannot build without GDCM. Please set GDCM_DIR.")
189 ENDIF (CLITK_VV_USE_BDCM)
192 SET(EXE_ICON vvIcon.rc)
195 ADD_DEFINITIONS(-DQT_DLL)
197 ADD_DEFINITIONS(-DQT_THREAD_SUPPORT)
199 ADD_EXECUTABLE(vv ${vv_SRCS} vv.cxx ${vv_UI_CXX} ${EXE_ICON})
200 TARGET_LINK_LIBRARIES(vv ${QT_LIBRARIES} ${ITK_LIBRARIES} ${VTK_LIBRARIES} )
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} )
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)
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)
223 # ADD_EXECUTABLE(vv WIN32 ${vv_SRCS} vv.cxx ${vv_UI_CXX} ${EXE_ICON})
225 # ADD_EXECUTABLE(vv ${vv_SRCS} vv.cxx ${vv_UI_CXX} ${EXE_ICON})
227 #TARGET_LINK_LIBRARIES(vv ${QT_LIBRARIES} ${ITK_LIBRARIES} ${VTK_LIBRARIES} QVTKWidgetPlugin )
229 #=========================================================
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)
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)
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)
288 #=========================================================
290 INCLUDE(InstallRequiredSystemLibraries)
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")