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