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