]> Creatis software - clitk.git/blob - vv/CMakeLists.txt
improvements to the build process:
[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 source files
12 SET(vv_SRCS
13   vvInfoPanel.cxx
14   vvLinkPanel.cxx
15   vvOverlayPanel.cxx
16   vvLandmarksPanel.cxx
17   vvQProgressDialogITKCommand.cxx
18   vvQDicomSeriesSelector.cxx
19   QTreePushButton.cxx
20   vvSegmentationDialog.cxx
21   vvSurfaceViewerDialog.cxx
22   vvMainWindowBase.cxx
23   vvMainWindow.cxx
24   vvProgressDialog.cxx
25   vvDeformationDialog.cxx
26   vvImageWarp.cxx
27   vvDeformableRegistration.cxx
28   vtkVOXImageWriter.cxx
29   vvInteractorStyleNavigator.cxx
30   vvSlicer.cxx
31   vvImageReader.cxx
32   vvImageReader.txx
33   vvImageWriter.cxx
34   vvImageWriter.txx
35   vvLandmarks.cxx
36   vvLandmarksGlyph.cxx
37   vvGlyphSource.cxx
38   vvGlyph2D.cxx
39   vvSlicerManager.cxx
40   vvSlicerManagerCommand.cxx
41   vvUtils.cxx
42   vvMaximumIntensityProjection.cxx
43   vvMesh.cxx
44   vvMeshActor.cxx
45   vvMeshReader.cxx
46   vvStructSelector.cxx
47   vvMidPosition.cxx
48   vvImageMapToWLColors.cxx
49   vvIntensityValueSlider.cxx
50   vvThreadedFilter.cxx
51   vvToolManager.cxx
52   vvToolCreatorBase.cxx
53   vvToolWidgetBase.cxx
54 #  vvToolWidgetWithStepsBase.cxx
55   vvToolMedianFilter.cxx
56   vvToolRigidReg.cxx
57 #  vvToolFoo.cxx
58 #  vvToolFooWithWidgetBase.cxx
59   vvToolCropImage.cxx
60   vvToolBinarize.cxx
61   vvToolSimpleInputSelectorWidget.cxx
62   vvToolInputSelectorWidget.cxx
63   vvImageContour.cxx
64   vvBinaryImageOverlayActor.cxx
65   vvToolImageArithm.cxx
66   vvToolConvert.cxx
67   vvToolStructureSetManager.cxx
68   vvStructureSetActor.cxx
69   vvROIActor.cxx
70   vvToolResample.cxx
71   vvBlendImageActor.cxx
72   vvLabelImageLoaderWidget.cxx
73   vvToolExtractPatient.cxx
74   vvToolExtractLung.cxx
75   vvToolPlastimatch.cxx
76 #  vvToolConnectedComponentLabeling.cxx
77 )
78
79 #=========================================================
80
81 #=========================================================
82 # Qt related commands
83 FIND_PACKAGE(Qt4 REQUIRED)
84
85 QT4_WRAP_CPP(vv_SRCS 
86   vvMainWindowBase.h 
87   vvMainWindow.h 
88   QTreePushButton.h 
89   vvInfoPanel.h 
90   vvLinkPanel.h 
91   vvOverlayPanel.h 
92   vvLandmarksPanel.h 
93   vvDocumentation.h  
94   vvHelpDialog.h  
95   vvProgressDialog.h 
96   vvQDicomSeriesSelector.h 
97   vvSegmentationDialog.h
98   vvSurfaceViewerDialog.h
99   vvDeformationDialog.h
100   vvSlicerManager.h
101   vvStructSelector.h
102   vvIntensityValueSlider.h
103   vvThreadedFilter.h
104   vvToolCreatorBase.h
105 #  vvToolFoo.h
106 #  vvToolFooWithWidgetBase.h
107   vvToolMedianFilter.h
108   vvToolRigidReg.h
109   vvToolBinarize.h
110   vvToolSimpleInputSelectorWidget.h
111   vvToolInputSelectorWidget.h
112   vvToolWidgetBase.h
113 #  vvToolWidgetWithStepsBase.h
114   vvToolCropImage.h
115   vvToolImageArithm.h
116   vvToolConvert.h
117   vvToolStructureSetManager.h
118   vvStructureSetActor.h
119   vvROIActor.h
120   vvToolResample.h
121   vvLabelImageLoaderWidget.h
122   vvToolExtractPatient.h
123   vvToolExtractLung.h
124   vvToolPlastimatch.h
125 #  vvToolConnectedComponentLabeling.h
126   )
127
128 QT4_WRAP_UI(vv_UI_CXX 
129   qt_ui/vvMainWindow.ui 
130   qt_ui/vvInfoPanel.ui 
131   qt_ui/vvLinkPanel.ui 
132   qt_ui/vvOverlayPanel.ui 
133   qt_ui/vvLandmarksPanel.ui 
134   qt_ui/vvHelpDialog.ui 
135   qt_ui/vvDocumentation.ui 
136   qt_ui/vvProgressDialog.ui 
137   qt_ui/vvDicomSeriesSelector.ui 
138   qt_ui/vvSegmentationDialog.ui
139   qt_ui/vvSurfaceViewerDialog.ui
140   qt_ui/vvDeformationDialog.ui
141   qt_ui/vvStructSelector.ui
142   qt_ui/vvDummyWindow.ui #For testing
143   qt_ui/vvIntensityValueSlider.ui
144   qt_ui/vvToolSimpleInputSelectorWidget.ui
145   qt_ui/vvToolInputSelectorWidget.ui
146   qt_ui/vvToolWidgetBase.ui
147 #  qt_ui/vvToolWidgetWithStepsBase.ui
148   qt_ui/vvToolMedianFilter.ui
149   qt_ui/vvToolRigidReg.ui
150 #  qt_ui/vvToolFoo.ui
151   qt_ui/vvToolCropImage.ui
152   qt_ui/vvToolBinarize.ui
153   qt_ui/vvToolImageArithm.ui
154   qt_ui/vvToolStructureSetManager.ui
155   qt_ui/vvToolResample.ui
156   qt_ui/vvLabelImageLoaderWidget.ui
157   qt_ui/vvToolExtractPatient.ui
158   qt_ui/vvToolExtractLung.ui
159   qt_ui/vvToolPlastimatch.ui
160 #  qt_ui/vvToolConnectedComponentLabeling.ui
161   )
162
163 QT4_ADD_RESOURCES(vv_SRCS vvIcons.qrc)
164
165
166 # if Windows and Qt was built as a static lib then don't set QT_DLL flag
167 SET(QT_STATIC 0)
168 IF (WIN32)
169   IF(EXISTS ${QT_LIBRARY_DIR}/QtCore.prl)
170     FILE(READ ${QT_LIBRARY_DIR}/QtCore.prl QT_CORE_PRL)
171     IF(${QT_CORE_PRL} MATCHES "static")
172       SET(QT_STATIC 1)
173     ENDIF(${QT_CORE_PRL} MATCHES "static")
174   ENDIF(EXISTS ${QT_LIBRARY_DIR}/QtCore.prl)
175 ENDIF(WIN32)
176 IF(NOT QT_STATIC)
177   ADD_DEFINITIONS(-DQT_DLL)
178 ENDIF(NOT QT_STATIC)
179
180 ADD_DEFINITIONS(-DQT_THREAD_SUPPORT)
181
182 INCLUDE_DIRECTORIES(
183   ${QT_INCLUDES}
184   ${QT_INCLUDE_DIR}
185   ${QT_QTGUI_INCLUDE_DIR}
186   ${QT_QTCORE_INCLUDE_DIR}
187   ${CMAKE_CURRENT_BINARY_DIR}
188   ${CMAKE_CURRENT_SOURCE_DIR}
189 )
190 #=========================================================
191
192 #=========================================================
193 #support for parallel deformable registration with OpenMP
194 IF(NOT __APPLE__)
195 IF(CMAKE_COMPILER_IS_GNUCC)
196   SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")
197 ENDIF(CMAKE_COMPILER_IS_GNUCC)
198 ENDIF(NOT __APPLE__)
199 #=========================================================
200
201 #=========================================================
202 INCLUDE_DIRECTORIES(
203   ../common
204   ../tools
205   ../segmentation
206   )
207
208 IF(WIN32)
209   SET(EXE_ICON vvIcon.rc)
210 ENDIF(WIN32)
211
212 LINK_DIRECTORIES(${QT_INCLUDES})
213 ADD_EXECUTABLE(vv ${vv_SRCS} vv.cxx ${vv_UI_CXX} ${EXE_ICON})
214 ADD_DEPENDENCIES(vv TOOLS_GGOS SEGMENTATION_GGOS)
215 TARGET_LINK_LIBRARIES(vv clitkDicomRTStruct 
216 #Libs for generic filters with long compilation times
217 clitkImageConvertLib 
218 clitkImageResampleLib
219 #Libs for _ggo.c files
220 clitkSegmentationGgoLib clitkToolsGgoLib
221 clitkCommon ${ITK_LIBRARIES} QVTK vtkHybrid)
222
223 #=========================================================
224
225 #=========================================================
226 # Install options (also used by CPack)
227 IF(UNIX AND NOT APPLE)
228   INSTALL (FILES ${EXECUTABLE_OUTPUT_PATH}/vv DESTINATION . PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE)
229   INSTALL (FILES ${CMAKE_CURRENT_SOURCE_DIR}/icons/ducky.png DESTINATION .)
230
231   #QT
232   #FOREACH(LIB QtCore QtGui QtOpenGL QtNetwork QtSql)
233   #  INSTALL(FILES "${QT_LIBRARY_DIR}/lib${LIB}.so.${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH}"
234   #          RENAME "lib${LIB}.so.${QT_VERSION_MAJOR}"
235   #          DESTINATION .)
236   #ENDFOREACH(LIB)
237 ENDIF(UNIX AND NOT APPLE)
238
239 IF(WIN32)
240   #INCLUDE(InstallRequiredSystemLibraries)
241   INSTALL(FILES ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_BUILD_TYPE}/vv.exe DESTINATION .)
242   #INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/icons/ducky.png DESTINATION .)
243 ENDIF(WIN32)
244 #=========================================================
245
246 #=========================================================
247 # CPack options
248 SET(CPACK_PACKAGE_NAME "vv")
249 SET(CPACK_SOURCE_PACKAGE_FILE_NAME "vv-src")
250 SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "vv, the 4D slicer : let's jump into a new dimension !")
251 SET(CPACK_PACKAGE_VENDOR "Creatis-CLB")
252 SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ReadMe.txt")
253 SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/License.txt")
254 SET(CPACK_PACKAGE_VERSION_MAJOR "1")
255 SET(CPACK_PACKAGE_VERSION_MINOR "1")
256 SET(CPACK_PACKAGE_VERSION_PATCH "0")
257 SET(CPACK_PACKAGE_INSTALL_DIRECTORY "vv")
258
259 IF(WIN32)
260   # There is a bug in NSI that does not handle full unix paths properly. Make
261   # sure there is at least one set of four (4) backlasshes.
262   SET(CPACK_NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\icons\\\\ducky.ico")
263   SET(CPACK_NSIS_INSTALLED_ICON_NAME "${CMAKE_BUILD_TYPE}\\\\vv.exe")
264   SET(CPACK_NSIS_DISPLAY_NAME "vv - The 4D slicer")
265   SET(CPACK_NSIS_HELP_LINK "http://www.creatis.insa-lyon.fr/rio/vv")
266   SET(CPACK_NSIS_URL_INFO_ABOUT "http://www.creatis.insa-lyon.fr/rio")
267   SET(CPACK_NSIS_CONTACT "vv@creatis.insa-lyon.fr")
268   SET(CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\vv.lnk\\\" \\\"$INSTDIR\\\\vv.exe\\\" ")
269   SET(CPACK_NSIS_DELETE_ICONS_EXTRA "Delete \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\vv.lnk\\\" ")
270   #SET(CPACK_NSIS_MODIFY_PATH ON) SR: buggy, wait for cmake updates for a fix
271   #SET(CPACK_BINARY_ZIP ON)
272 ELSE(WIN32)
273   SET(CPACK_GENERATOR "STGZ")
274   SET(CPACK_SOURCE_GENERATOR "TGZ") 
275 ENDIF(WIN32)
276 INCLUDE(CPack)
277 #=========================================================