]> Creatis software - clitk.git/blob - vv/CMakeLists.txt
Merge branch 'master' of /home/dsarrut/clitk3.server
[clitk.git] / vv / CMakeLists.txt
1 cmake_minimum_required(VERSION 2.4)
2
3 #=========================================================
4 # To avoid warning with some version
5 if(COMMAND cmake_policy)
6   cmake_policy(SET CMP0003 NEW)
7 endif(COMMAND cmake_policy)
8 #=========================================================
9
10 #=========================================================
11 #List of vv tools to compile
12 SET(vv_TOOLS
13   vvToolMedianFilter
14 #  vvToolRigidReg ## Very long to compile
15   vvToolCropImage
16   vvToolBinarize
17   vvToolImageArithm
18   vvToolResample
19 #   vvToolExtractPatient
20 #  vvToolExtractLung
21   vvToolMIP
22   vvToolConvert ## with dummy vvToolConvert.ui
23   
24   ## these ones are for tests (not working)
25   # vvToolFoo
26   # vvToolFooWithWidgetBase
27   # vvToolPlastimatch
28   # vvToolConnectedComponentLabeling  
29 )
30 # dependencies of the tools
31 # Future issues : when tool depend on other tools ... how to manage that ?
32 #  >> add the relevant $_LIBS variable to the tool that has dependencies?
33 SET(vvToolRigidReg_LIBS clitkAffineRegistrationLib)
34 SET(vvToolBinarize_LIBS clitkBinarizeImageLib)
35 SET(vvToolResample_LIBS clitkResampleImageLib)
36 SET(vvToolConvert_LIBS clitkImageConvertLib)
37 SET(vvToolExtractPatient_LIBS clitkSegmentationGgoLib)
38 SET(vvToolExtractLung_LIBS clitkSegmentationGgoLib)
39 SET(vvToolCropImage_LIBS clitkCropImageLib)
40 SET(vvToolMIP_LIBS clitkMIPLib)
41 SET(vvToolMedianFilter_LIBS clitkMedianImageFilterLib)
42 SET(vvToolImageArithm_LIBS clitkImageArithmImageLib)
43
44 #=========================================================
45 # List of vv source files
46
47 # in COMMON_WITH_UI -> must have .h and .cxx and .ui
48 SET(vv_COMMON_WITH_UI
49   vvInfoPanel
50   vvMainWindow 
51   vvLinkPanel 
52   vvOverlayPanel 
53   vvLandmarksPanel 
54   vvProgressDialog 
55   vvSegmentationDialog
56   vvSurfaceViewerDialog
57   vvDeformationDialog
58   vvStructSelector
59   vvIntensityValueSlider
60   vvLabelImageLoaderWidget
61   vvToolWidgetBase  
62   vvToolSimpleInputSelectorWidget
63   vvToolInputSelectorWidget
64   vvToolStructureSetManager
65 )
66
67 # All others sources
68 SET(vv_SRCS
69   vvQProgressDialogITKCommand.cxx
70   vvQDicomSeriesSelector.cxx
71   QTreePushButton.cxx
72   vvMainWindowBase.cxx
73   vvImageWarp.cxx
74   vvDeformableRegistration.cxx
75   vtkVOXImageWriter.cxx
76   vvInteractorStyleNavigator.cxx
77   vvSlicer.cxx
78   vvLandmarks.cxx
79   vvLandmarksGlyph.cxx
80   vvGlyphSource.cxx
81   vvGlyph2D.cxx
82   vvSlicerManager.cxx
83   vvSlicerManagerCommand.cxx
84   vvUtils.cxx
85 #  vvMaximumIntensityProjection.cxx
86   vvMesh.cxx
87   vvMeshActor.cxx
88   vvMeshReader.cxx
89   vvMidPosition.cxx
90   vvImageMapToWLColors.cxx
91   vvThreadedFilter.cxx
92   vvImageContour.cxx
93   vvBinaryImageOverlayActor.cxx
94   vvStructureSetActor.cxx
95   vvROIActor.cxx
96   vvBlendImageActor.cxx
97   vvToolManager.cxx
98   vvToolCreatorBase.cxx
99 )
100
101 #=========================================================
102 # Qt related commands
103 FIND_PACKAGE(Qt4 REQUIRED)
104
105 QT4_WRAP_CPP(vv_SRCS 
106   vvMainWindowBase.h 
107   QTreePushButton.h 
108   vvDocumentation.h  
109   vvHelpDialog.h  
110   vvQDicomSeriesSelector.h 
111   vvSlicerManager.h
112   vvThreadedFilter.h
113   vvStructureSetActor.h
114   vvROIActor.h
115   vvToolCreatorBase.h
116   )
117
118 QT4_WRAP_UI(vv_UI_CXX 
119   qt_ui/vvHelpDialog.ui 
120   qt_ui/vvDocumentation.ui 
121   qt_ui/vvDicomSeriesSelector.ui 
122   qt_ui/vvDummyWindow.ui #For testing
123   )
124
125 QT4_ADD_RESOURCES(vv_SRCS vvIcons.qrc)
126
127 #Add the autotools and the common files ui
128 foreach(tool ${vv_TOOLS} ${vv_COMMON_WITH_UI})
129     SET(vv_SRCS ${vv_SRCS} ${tool}.cxx)
130     QT4_WRAP_CPP(vv_SRCS ${tool}.h)
131     QT4_WRAP_UI(vv_UI_CXX qt_ui/${tool}.ui)
132 endforeach(tool)
133
134 #Add the common source files
135 foreach(tool ${vv_COMMON})
136     SET(vv_SRCS ${vv_SRCS} ${tool}.cxx)
137     QT4_WRAP_CPP(vv_SRCS ${tool}.h)
138 endforeach(tool)
139
140 # if Windows and Qt was built as a static lib then don't set QT_DLL flag
141 SET(QT_STATIC 0)
142 IF (WIN32)
143   IF(EXISTS ${QT_LIBRARY_DIR}/QtCore.prl)
144     FILE(READ ${QT_LIBRARY_DIR}/QtCore.prl QT_CORE_PRL)
145     IF(${QT_CORE_PRL} MATCHES "static")
146       SET(QT_STATIC 1)
147     ENDIF(${QT_CORE_PRL} MATCHES "static")
148   ENDIF(EXISTS ${QT_LIBRARY_DIR}/QtCore.prl)
149 ENDIF(WIN32)
150 IF(NOT QT_STATIC)
151   ADD_DEFINITIONS(-DQT_DLL)
152 ENDIF(NOT QT_STATIC)
153
154 ADD_DEFINITIONS(-DQT_THREAD_SUPPORT)
155
156 INCLUDE_DIRECTORIES(
157   ${QT_INCLUDES}
158   ${QT_INCLUDE_DIR}
159   ${QT_QTGUI_INCLUDE_DIR}
160   ${QT_QTCORE_INCLUDE_DIR}
161   ${CMAKE_CURRENT_BINARY_DIR}
162   ${CMAKE_CURRENT_SOURCE_DIR}
163 )
164 #=========================================================
165
166 #=========================================================
167 #support for parallel deformable registration with OpenMP
168 IF(NOT APPLE)
169 IF(CMAKE_COMPILER_IS_GNUCC)
170   SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")
171 ENDIF(CMAKE_COMPILER_IS_GNUCC)
172 ENDIF(NOT APPLE)
173 #=========================================================
174
175 #=========================================================
176 INCLUDE_DIRECTORIES(
177   ../common
178   ../tools
179   ../segmentation
180   )
181
182 IF(WIN32)
183   SET(EXE_ICON vvIcon.rc)
184 ENDIF(WIN32)
185
186 LINK_DIRECTORIES(${QT_LIBRARY_DIR})
187 ADD_EXECUTABLE(vv ${vv_SRCS} vv.cxx ${vv_UI_CXX} ${EXE_ICON})
188 ADD_DEPENDENCIES(vv clitkSegmentationGgoLib)
189 TARGET_LINK_LIBRARIES(vv clitkDicomRTStruct)
190
191 #=========================================================
192 #Add each tool's dependencies
193 foreach(tool ${vv_TOOLS})
194     target_link_libraries(vv ${${tool}_LIBS})
195 endforeach(tool)
196
197 #=========================================================
198 #Add Foundation Libraries (this should be after our libraries, since we depend
199 #on them)
200 TARGET_LINK_LIBRARIES(vv
201 clitkCommon ${ITK_LIBRARIES} QVTK vtkHybrid)
202
203 #=========================================================
204 # Install options (also used by CPack)
205 IF(UNIX AND NOT APPLE)
206   SET_TARGET_PROPERTIES(vv
207     PROPERTIES INSTALL_RPATH "${VTK_DIR}:${ITK_DIR}" )  
208   INSTALL (TARGETS vv DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE)
209   #  INSTALL (FILES ${CMAKE_CURRENT_SOURCE_DIR}/icons/ducky.png DESTINATION .)
210
211   #QT
212   #FOREACH(LIB QtCore QtGui QtOpenGL QtNetwork QtSql)
213   #  INSTALL(FILES "${QT_LIBRARY_DIR}/lib${LIB}.so.${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH}"
214   #          RENAME "lib${LIB}.so.${QT_VERSION_MAJOR}"
215   #          DESTINATION .)
216   #ENDFOREACH(LIB)
217 ENDIF(UNIX AND NOT APPLE)
218
219 IF(WIN32)
220   #INCLUDE(InstallRequiredSystemLibraries)
221   INSTALL(FILES ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_BUILD_TYPE}/vv.exe DESTINATION .)
222   #INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/icons/ducky.png DESTINATION .)
223 ENDIF(WIN32)
224 #=========================================================
225
226 #=========================================================
227 # CPack options
228 SET(CPACK_PACKAGE_NAME "vv")
229 SET(CPACK_SOURCE_PACKAGE_FILE_NAME "vv-src")
230 SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "vv, the 4D slicer : let's jump into a new dimension !")
231 SET(CPACK_PACKAGE_VENDOR "Creatis-CLB")
232 SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ReadMe.txt")
233 SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/License.txt")
234 SET(CPACK_PACKAGE_VERSION_MAJOR "1")
235 SET(CPACK_PACKAGE_VERSION_MINOR "2")
236 SET(CPACK_PACKAGE_VERSION_PATCH "0")
237 SET(CPACK_PACKAGE_INSTALL_DIRECTORY "vv")
238 SET(CPACK_STRIP_FILES TRUE)
239
240 IF(WIN32)
241   # There is a bug in NSI that does not handle full unix paths properly. Make
242   # sure there is at least one set of four (4) backlasshes.
243   SET(CPACK_NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\icons\\\\ducky.ico")
244   SET(CPACK_NSIS_INSTALLED_ICON_NAME "${CMAKE_BUILD_TYPE}\\\\vv.exe")
245   SET(CPACK_NSIS_DISPLAY_NAME "vv - The 4D slicer")
246   SET(CPACK_NSIS_HELP_LINK "http://www.creatis.insa-lyon.fr/rio/vv")
247   SET(CPACK_NSIS_URL_INFO_ABOUT "http://www.creatis.insa-lyon.fr/rio")
248   SET(CPACK_NSIS_CONTACT "vv@creatis.insa-lyon.fr")
249   SET(CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\vv.lnk\\\" \\\"$INSTDIR\\\\vv.exe\\\" ")
250   SET(CPACK_NSIS_DELETE_ICONS_EXTRA "Delete \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\vv.lnk\\\" ")
251   #SET(CPACK_NSIS_MODIFY_PATH ON) SR: buggy, wait for cmake updates for a fix
252   #SET(CPACK_BINARY_ZIP ON)
253 ELSE(WIN32)
254   SET(CPACK_GENERATOR "STGZ")
255   SET(CPACK_SOURCE_GENERATOR "TGZ") 
256 ENDIF(WIN32)
257 INCLUDE(CPack)
258 #=========================================================