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