]> Creatis software - clitk.git/blob - vv/CMakeLists.txt
Add gdcm dependencies
[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 IF (CLITK_USE_SYSTEM_GDCM)
12   FIND_PACKAGE(GDCM REQUIRED)
13   SET(ITK_LIBRARIES ${ITK_LIBRARIES} gdcmDICT gdcmMSFF)
14 ENDIF()
15 #=========================================================
16   
17
18 #=========================================================
19 #List of vv tools to compile
20 SET(vv_TOOLS
21   vvToolMedianFilter
22   vvToolRigidReg
23   vvToolCropImage
24   vvToolBinarize
25   vvToolImageArithm
26   vvToolResample
27   vvToolMIP
28   vvToolConvert ## with dummy vvToolConvert.ui
29   vvToolROIManager
30   vvToolSegmentation
31   ## these ones are for tests (not working)
32   # vvToolFoo
33   # vvToolFooWithWidgetBase
34   # vvToolPlastimatch
35   # vvToolConnectedComponentLabeling  
36   ## these ones are old ones
37   # vvToolExtractPatient
38   # vvToolExtractLung
39   # vvToolStructureSetManager
40 )
41 # dependencies of the tools
42 # Future issues : when tool depend on other tools ... how to manage that ?
43 #  >> add the relevant $_LIBS variable to the tool that has dependencies?
44 SET(vvToolBinarize_LIBS clitkBinarizeImageLib)
45 SET(vvToolResample_LIBS clitkResampleImageLib)
46 SET(vvToolConvert_LIBS clitkImageConvertLib)
47 SET(vvToolExtractPatient_LIBS clitkSegmentationGgoLib)
48 SET(vvToolExtractLung_LIBS clitkSegmentationGgoLib)
49 SET(vvToolCropImage_LIBS clitkCropImageLib)
50 SET(vvToolMIP_LIBS clitkMIPLib)
51 SET(vvToolMedianFilter_LIBS clitkMedianImageFilterLib)
52 SET(vvToolImageArithm_LIBS clitkImageArithmImageLib)
53 SET(vvToolROIManager_LIBS clitkDicomRTStruct)
54
55 #=========================================================
56 # List of vv source files
57
58 # in COMMON_WITH_UI -> must have .h and .cxx and .ui
59 SET(vv_COMMON_WITH_UI
60   vvInfoPanel
61   vvMainWindow 
62   vvLinkPanel 
63   vvOverlayPanel 
64   vvLandmarksPanel 
65   vvProgressDialog 
66   vvSegmentationDialog
67   vvSurfaceViewerDialog
68   vvDeformationDialog
69   vvStructSelector
70   vvIntensityValueSlider
71   vvLabelImageLoaderWidget
72   vvToolWidgetBase  
73   vvToolSimpleInputSelectorWidget
74   vvToolInputSelectorWidget
75   vvRegisterForm
76 )
77
78 # All others sources
79 SET(vv_SRCS
80   vvQProgressDialogITKCommand.cxx
81   vvQDicomSeriesSelector.cxx
82   QTreePushButton.cxx
83   vvMainWindowBase.cxx
84   vvImageWarp.cxx
85   vvDeformableRegistration.cxx
86   vtkVOXImageWriter.cxx
87   vvInteractorStyleNavigator.cxx
88   vvSlicer.cxx
89   vvLandmarks.cxx
90   vvLandmarksGlyph.cxx
91   vvClipPolyData.cxx
92   vvGlyphSource.cxx
93   vvGlyph2D.cxx
94   vvSlicerManager.cxx
95   vvSlicerManagerCommand.cxx
96   vvUtils.cxx
97 #  vvMaximumIntensityProjection.cxx
98   vvMesh.cxx
99   vvMeshActor.cxx
100   vvMeshReader.cxx
101   vvMidPosition.cxx
102   vvImageContour.cxx
103   vvBinaryImageOverlayActor.cxx
104   vvStructureSetActor.cxx
105   vvSaveState.cxx
106   vvReadState.cxx
107   vvROIActor.cxx
108   vvBlendImageActor.cxx
109   vvToolManager.cxx
110   vvToolCreatorBase.cxx
111   vvToolBaseBase.cxx
112 )
113
114 #=========================================================
115 # Qt related commands
116 FIND_PACKAGE(Qt4 REQUIRED)
117
118 QT4_WRAP_CPP(vv_SRCS 
119   vvMainWindowBase.h 
120   QTreePushButton.h 
121   vvDocumentation.h  
122   vvHelpDialog.h  
123   vvQDicomSeriesSelector.h 
124   vvSlicerManager.h
125   vvStructureSetActor.h
126   vvROIActor.h
127   vvToolCreatorBase.h
128   )
129
130 QT4_WRAP_UI(vv_UI_CXX 
131   qt_ui/vvHelpDialog.ui 
132   qt_ui/vvDocumentation.ui 
133   qt_ui/vvDicomSeriesSelector.ui 
134   qt_ui/vvDummyWindow.ui #For testing
135   )
136
137 QT4_ADD_RESOURCES(vv_SRCS vvIcons.qrc)
138
139 # Add the autotools in the header vvToolsList.h for initialization of the dummy
140 # variables in vv.cxx for the tools contained in vvLib
141 if(${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/vvToolsList.h)
142   file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/vvToolsList.h)
143   foreach(tool ${vv_TOOLS})
144     FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/vvToolsList.h "#include \"${tool}.h\"\n")
145     FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/vvToolsList.h "extern const vvToolCreator<${tool}> *dummy${tool};\n")
146     FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/vvToolsList.h "const vvToolCreator<${tool}> *dummy${tool}2 = dummy${tool};\n\n")
147   endforeach(tool)
148 endif(${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/vvToolsList.h)
149
150 # Add the autotools and the common files ui
151 foreach(tool ${vv_TOOLS} ${vv_COMMON_WITH_UI})
152     SET(vv_SRCS ${vv_SRCS} ${tool}.cxx)
153     QT4_WRAP_CPP(vv_SRCS ${tool}.h)
154     QT4_WRAP_UI(vv_UI_CXX qt_ui/${tool}.ui)
155 endforeach(tool)
156
157 # Add the common source files
158 foreach(tool ${vv_COMMON})
159     SET(vv_SRCS ${vv_SRCS} ${tool}.cxx)
160     QT4_WRAP_CPP(vv_SRCS ${tool}.h)
161 endforeach(tool)
162
163 # if Windows and Qt was built as a static lib then don't set QT_DLL flag
164 SET(QT_STATIC 0)
165 IF (WIN32)
166   IF(EXISTS ${QT_LIBRARY_DIR}/QtCore.prl)
167     FILE(READ ${QT_LIBRARY_DIR}/QtCore.prl QT_CORE_PRL)
168     IF(${QT_CORE_PRL} MATCHES "static")
169       SET(QT_STATIC 1)
170     ENDIF(${QT_CORE_PRL} MATCHES "static")
171   ENDIF(EXISTS ${QT_LIBRARY_DIR}/QtCore.prl)
172 ENDIF(WIN32)
173 IF(NOT QT_STATIC)
174   ADD_DEFINITIONS(-DQT_DLL)
175 ENDIF(NOT QT_STATIC)
176
177 ADD_DEFINITIONS(-DQT_THREAD_SUPPORT)
178
179 INCLUDE_DIRECTORIES(
180   ${QT_INCLUDES}
181   ${QT_INCLUDE_DIR}
182   ${QT_QTGUI_INCLUDE_DIR}
183   ${QT_QTCORE_INCLUDE_DIR}
184   ${CMAKE_CURRENT_BINARY_DIR}
185   ${CMAKE_CURRENT_SOURCE_DIR}
186 )
187 #=========================================================
188
189 #=========================================================
190 #support for parallel deformable registration with OpenMP
191 IF(NOT APPLE)
192 IF(CMAKE_COMPILER_IS_GNUCC)
193   SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")
194 ENDIF(CMAKE_COMPILER_IS_GNUCC)
195 ENDIF(NOT APPLE)
196 #=========================================================
197
198 #=========================================================
199 INCLUDE_DIRECTORIES(
200   ../common
201   ../tools
202   ../segmentation
203   )
204
205 LINK_DIRECTORIES(${QT_LIBRARY_DIR})
206
207 #=========================================================
208 #Add each tool's dependencies
209 foreach(tool ${vv_TOOLS})
210   SET(toolLibs ${toolLibs} ${${tool}_LIBS})
211 endforeach(tool)
212
213 #=========================================================
214 #Add Foundation Libraries (this should be after our libraries, since we depend
215 #on them)
216 SET(foundationLibraries clitkCommon ${ITK_LIBRARIES} QVTK vtkHybrid)
217
218 #=========================================================
219 # Use CxImage to create animated gifs
220 IF(CLITK_EXPERIMENTAL)
221   SET(vvCxImage clitkCxImage)
222   SET(vv_SRCS ${vv_SRCS} vvAnimatedGIFWriter.cxx)
223   INCLUDE_DIRECTORIES(${CLITK_SOURCE_DIR}/utilities/CxImage)
224   ADD_SUBDIRECTORY(${CLITK_SOURCE_DIR}/utilities/CxImage ${PROJECT_BINARY_DIR}/utilities/CxImage)
225 ENDIF(CLITK_EXPERIMENTAL)
226 #=========================================================
227
228 #=========================================================
229 #Create binary and libs for tests
230 SET(vvExternalLibs ${QT_QTNETWORK_LIBRARY} clitkSegmentationGgoLib ${toolLibs} ${foundationLibraries} ${vvCxImage})
231 # QtNetwork is required by vvRegisterForm
232
233 ADD_LIBRARY(vvLib ${vv_SRCS} ${vv_UI_CXX})
234 TARGET_LINK_LIBRARIES(vvLib ${vvExternalLibs})
235
236 IF(WIN32)
237   ADD_EXECUTABLE(vv WIN32 vv.cxx vvIcon.rc)
238 ELSE(WIN32)
239   ADD_EXECUTABLE(vv vv.cxx)
240 ENDIF(WIN32)
241
242 TARGET_LINK_LIBRARIES(vv vvLib)
243 #${CLITK_GDCM_LIBRARIES})
244
245 #=========================================================
246 # Install options (also used by CPack)
247 INSTALL (TARGETS vv DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE)
248
249 #=========================================================
250
251 #=========================================================
252 # CPack options
253 SET(CPACK_PACKAGE_NAME "vv")
254 SET(CPACK_SOURCE_PACKAGE_FILE_NAME "vv-src")
255 SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "vv, the 4D slicer : let's jump into a new dimension !")
256 SET(CPACK_PACKAGE_VENDOR "Creatis-CLB")
257 SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ReadMe.txt")
258 SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/License.txt")
259 SET(CPACK_PACKAGE_VERSION_MAJOR "1")
260 SET(CPACK_PACKAGE_VERSION_MINOR "3")
261 SET(CPACK_PACKAGE_VERSION_PATCH "0")
262 IF(NIGHTLY)
263   SET(CPACK_PACKAGE_INSTALL_DIRECTORY "vv-nightly")
264 ELSE(NIGHTLY)
265   SET(CPACK_PACKAGE_INSTALL_DIRECTORY "vv")
266 ENDIF(NIGHTLY)
267 SET(CPACK_STRIP_FILES TRUE)
268
269 IF(WIN32)
270   # There is a bug in NSI that does not handle full unix paths properly. Make
271   # sure there is at least one set of four (4) backlasshes.
272   SET(CPACK_NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\icons\\\\ducky.ico")
273   SET(CPACK_NSIS_INSTALLED_ICON_NAME "vv.exe")
274 IF(NIGHTLY)
275   SET(CPACK_NSIS_DISPLAY_NAME "vv - The 4D slicer (nightly)")
276 ELSE(NIGHTLY)
277   SET(CPACK_NSIS_DISPLAY_NAME "vv - The 4D slicer")
278 ENDIF(NIGHTLY)
279   SET(CPACK_NSIS_HELP_LINK "http://www.creatis.insa-lyon.fr/rio/vv")
280   SET(CPACK_NSIS_URL_INFO_ABOUT "http://www.creatis.insa-lyon.fr/rio")
281   SET(CPACK_NSIS_CONTACT "vv@creatis.insa-lyon.fr")
282   SET(CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\vv.lnk\\\" \\\"$INSTDIR\\\\bin\\\\vv.exe\\\" ")
283   SET(CPACK_NSIS_DELETE_ICONS_EXTRA "Delete \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\vv.lnk\\\" ")
284   #SET(CPACK_NSIS_MODIFY_PATH ON) SR: buggy, wait for cmake updates for a fix
285   #SET(CPACK_BINARY_ZIP ON)
286 ELSE(WIN32)
287   SET(CPACK_GENERATOR "STGZ")
288   SET(CPACK_SOURCE_GENERATOR "TGZ") 
289 ENDIF(WIN32)
290 INCLUDE(CPack)
291 #=========================================================
292 #=========================================================
293 configure_file(vvConfiguration.h.in vvConfiguration.h)
294 #=========================================================