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