]> Creatis software - clitk.git/blob - vv/CMakeLists.txt
4d5c36b1292e1c1ad4398697ccb3daae66aceebe
[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 #=========================================================
12 #List of vv tools to compile
13 SET(vv_TOOLS
14   vvToolMedianFilter
15 #  vvToolRigidReg ## Very long to compile
16   vvToolCropImage
17   vvToolBinarize
18   vvToolImageArithm
19   vvToolResample
20 #   vvToolExtractPatient
21 #  vvToolExtractLung
22   vvToolMIP
23   vvToolConvert ## with dummy vvToolConvert.ui
24   
25   ## these ones are for tests (not working)
26   # vvToolFoo
27   # vvToolFooWithWidgetBase
28   # vvToolPlastimatch
29   # vvToolConnectedComponentLabeling  
30 )
31 # dependencies of the tools
32 # Future issues : when tool depend on other tools ... how to manage that ?
33 #  >> add the relevant $_LIBS variable to the tool that has dependencies?
34 SET(vvToolRigidReg_LIBS clitkAffineRegistrationLib)
35 SET(vvToolBinarize_LIBS clitkBinarizeImageLib)
36 SET(vvToolResample_LIBS clitkResampleImageLib)
37 SET(vvToolConvert_LIBS clitkImageConvertLib)
38 SET(vvToolExtractPatient_LIBS clitkSegmentationGgoLib)
39 SET(vvToolExtractLung_LIBS clitkSegmentationGgoLib)
40 SET(vvToolCropImage_LIBS clitkCropImageLib)
41 SET(vvToolMIP_LIBS clitkMIPLib)
42 SET(vvToolMedianFilter_LIBS clitkMedianImageFilterLib)
43 SET(vvToolImageArithm_LIBS clitkImageArithmImageLib)
44
45 #=========================================================
46 # List of vv source files
47
48 # in COMMON_WITH_UI -> must have .h and .cxx and .ui
49 SET(vv_COMMON_WITH_UI
50   vvInfoPanel
51   vvMainWindow 
52   vvLinkPanel 
53   vvOverlayPanel 
54   vvLandmarksPanel 
55   vvProgressDialog 
56   vvSegmentationDialog
57   vvSurfaceViewerDialog
58   vvDeformationDialog
59   vvStructSelector
60   vvIntensityValueSlider
61   vvLabelImageLoaderWidget
62   vvToolWidgetBase  
63   vvToolSimpleInputSelectorWidget
64   vvToolInputSelectorWidget
65   vvToolStructureSetManager
66   vvRegisterForm
67 )
68
69 # All others sources
70 SET(vv_SRCS
71   vvQProgressDialogITKCommand.cxx
72   vvQDicomSeriesSelector.cxx
73   QTreePushButton.cxx
74   vvMainWindowBase.cxx
75   vvImageWarp.cxx
76   vvDeformableRegistration.cxx
77   vtkVOXImageWriter.cxx
78   vvInteractorStyleNavigator.cxx
79   vvSlicer.cxx
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   vvRegisterForm.h
119   )
120
121 QT4_WRAP_UI(vv_UI_CXX 
122   qt_ui/vvHelpDialog.ui 
123   qt_ui/vvRegisterForm.ui 
124   qt_ui/vvDocumentation.ui 
125   qt_ui/vvDicomSeriesSelector.ui 
126   qt_ui/vvDummyWindow.ui #For testing
127   )
128
129 QT4_ADD_RESOURCES(vv_SRCS vvIcons.qrc)
130
131 #Add the autotools and the common files ui
132 foreach(tool ${vv_TOOLS} ${vv_COMMON_WITH_UI})
133     SET(vv_SRCS ${vv_SRCS} ${tool}.cxx)
134     QT4_WRAP_CPP(vv_SRCS ${tool}.h)
135     QT4_WRAP_UI(vv_UI_CXX qt_ui/${tool}.ui)
136 endforeach(tool)
137 #Add the common source files
138 foreach(tool ${vv_COMMON})
139     SET(vv_SRCS ${vv_SRCS} ${tool}.cxx)
140     QT4_WRAP_CPP(vv_SRCS ${tool}.h)
141 endforeach(tool)
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 #=========================================================
190 #Add each tool's dependencies
191 foreach(tool ${vv_TOOLS})
192   SET(toolLibs ${toolLibs} ${${tool}_LIBS})
193 endforeach(tool)
194 #=========================================================
195 #Add Foundation Libraries (this should be after our libraries, since we depend
196 #on them)
197 SET(foundationLibraries clitkCommon ${ITK_LIBRARIES} QVTK vtkHybrid)
198
199 #=========================================================
200 #Create binary and libs for tests
201 SET(vvExternalLibs clitkSegmentationGgoLib clitkDicomRTStruct ${toolLibs} ${foundationLibraries} CACHE INTERNAL DOCSTRING)
202 ADD_EXECUTABLE(vv ${vv_SRCS} vv.cxx ${vv_UI_CXX} ${EXE_ICON})
203 ADD_DEPENDENCIES(vv clitkSegmentationGgoLib)
204 IF(BUILD_TESTING)
205   target_link_libraries(vv ${vvExternalLibs})
206   add_library(vvLib ${vv_SRCS} vv.cxx ${vv_UI_CXX} ${EXE_ICON})
207 ENDIF(BUILD_TESTING)
208 #=========================================================
209 # Install options (also used by CPack)
210 IF(UNIX AND NOT APPLE)
211   SET_TARGET_PROPERTIES(vv
212     PROPERTIES INSTALL_RPATH "${VTK_DIR}:${ITK_DIR}" )  
213   INSTALL (TARGETS vv DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE)
214   #  INSTALL (FILES ${CMAKE_CURRENT_SOURCE_DIR}/icons/ducky.png DESTINATION .)
215
216   #QT
217   #FOREACH(LIB QtCore QtGui QtOpenGL QtNetwork QtSql)
218   #  INSTALL(FILES "${QT_LIBRARY_DIR}/lib${LIB}.so.${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH}"
219   #          RENAME "lib${LIB}.so.${QT_VERSION_MAJOR}"
220   #          DESTINATION .)
221   #ENDFOREACH(LIB)
222 ENDIF(UNIX AND NOT APPLE)
223
224 IF(WIN32)
225   #INCLUDE(InstallRequiredSystemLibraries)
226   INSTALL(FILES ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_BUILD_TYPE}/vv.exe DESTINATION .)
227   #INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/icons/ducky.png DESTINATION .)
228 ENDIF(WIN32)
229 #=========================================================
230
231 #=========================================================
232 # CPack options
233 SET(CPACK_PACKAGE_NAME "vv")
234 SET(CPACK_SOURCE_PACKAGE_FILE_NAME "vv-src")
235 SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "vv, the 4D slicer : let's jump into a new dimension !")
236 SET(CPACK_PACKAGE_VENDOR "Creatis-CLB")
237 SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ReadMe.txt")
238 SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/License.txt")
239 SET(CPACK_PACKAGE_VERSION_MAJOR "1")
240 SET(CPACK_PACKAGE_VERSION_MINOR "2")
241 SET(CPACK_PACKAGE_VERSION_PATCH "0")
242 SET(CPACK_PACKAGE_INSTALL_DIRECTORY "vv")
243 SET(CPACK_STRIP_FILES TRUE)
244
245 IF(WIN32)
246   # There is a bug in NSI that does not handle full unix paths properly. Make
247   # sure there is at least one set of four (4) backlasshes.
248   SET(CPACK_NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\icons\\\\ducky.ico")
249   SET(CPACK_NSIS_INSTALLED_ICON_NAME "${CMAKE_BUILD_TYPE}\\\\vv.exe")
250   SET(CPACK_NSIS_DISPLAY_NAME "vv - The 4D slicer")
251   SET(CPACK_NSIS_HELP_LINK "http://www.creatis.insa-lyon.fr/rio/vv")
252   SET(CPACK_NSIS_URL_INFO_ABOUT "http://www.creatis.insa-lyon.fr/rio")
253   SET(CPACK_NSIS_CONTACT "vv@creatis.insa-lyon.fr")
254   SET(CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\vv.lnk\\\" \\\"$INSTDIR\\\\vv.exe\\\" ")
255   SET(CPACK_NSIS_DELETE_ICONS_EXTRA "Delete \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\vv.lnk\\\" ")
256   #SET(CPACK_NSIS_MODIFY_PATH ON) SR: buggy, wait for cmake updates for a fix
257   #SET(CPACK_BINARY_ZIP ON)
258 ELSE(WIN32)
259   SET(CPACK_GENERATOR "STGZ")
260   SET(CPACK_SOURCE_GENERATOR "TGZ") 
261 ENDIF(WIN32)
262 INCLUDE(CPack)
263 #=========================================================
264 #=========================================================
265 configure_file(vvCommon.h.in vvCommon.h)
266 #=========================================================