]> Creatis software - clitk.git/blob - vv/CMakeLists.txt
first developments for PacsConnection
[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   vvQPacsConnection.cxx
75   QTreePushButton.cxx
76   vvMainWindowBase.cxx
77   vvImageWarp.cxx
78   vvDeformableRegistration.cxx
79   vtkVOXImageWriter.cxx
80   vvInteractorStyleNavigator.cxx
81   vvSlicer.cxx
82   vvLandmarks.cxx
83   vvLandmarksGlyph.cxx
84   vvClipPolyData.cxx
85   vvGlyphSource.cxx
86   vvGlyph2D.cxx
87   vvSlicerManager.cxx
88   vvSlicerManagerCommand.cxx
89   vvUtils.cxx
90 #  vvMaximumIntensityProjection.cxx
91   vvMesh.cxx
92   vvMeshActor.cxx
93   vvMeshReader.cxx
94   vvMidPosition.cxx
95   vvImageContour.cxx
96   vvBinaryImageOverlayActor.cxx
97   vvStructureSetActor.cxx
98   vvSaveState.cxx
99   vvReadState.cxx
100   vvROIActor.cxx
101   vvBlendImageActor.cxx
102   vvToolManager.cxx
103   vvToolCreatorBase.cxx
104   vvToolBaseBase.cxx
105 )
106
107 #=========================================================
108 # Qt related commands
109 FIND_PACKAGE(Qt4 REQUIRED)
110
111 QT4_WRAP_CPP(vv_SRCS 
112   vvMainWindowBase.h 
113   QTreePushButton.h 
114   vvDocumentation.h  
115   vvHelpDialog.h  
116   vvQDicomSeriesSelector.h 
117   vvQPacsConnection.h
118   vvSlicerManager.h
119   vvStructureSetActor.h
120   vvROIActor.h
121   vvToolCreatorBase.h
122   )
123
124 QT4_WRAP_UI(vv_UI_CXX 
125   qt_ui/vvHelpDialog.ui 
126   qt_ui/vvDocumentation.ui 
127   qt_ui/vvDicomSeriesSelector.ui 
128    qt_ui/vvPacsConnection.ui 
129   qt_ui/vvDummyWindow.ui #For testing
130   )
131
132 QT4_ADD_RESOURCES(vv_SRCS vvIcons.qrc)
133
134 # Add the autotools in the header vvToolsList.h for initialization of the dummy
135 # variables in vv.cxx for the tools contained in vvLib
136 if(${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/vvToolsList.h)
137   file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/vvToolsList.h)
138   foreach(tool ${vv_TOOLS})
139     FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/vvToolsList.h "#include \"${tool}.h\"\n")
140     FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/vvToolsList.h "extern const vvToolCreator<${tool}> *dummy${tool};\n")
141     FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/vvToolsList.h "const vvToolCreator<${tool}> *dummy${tool}2 = dummy${tool};\n\n")
142   endforeach(tool)
143 endif(${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/vvToolsList.h)
144
145 # Add the autotools and the common files ui
146 foreach(tool ${vv_TOOLS} ${vv_COMMON_WITH_UI})
147     SET(vv_SRCS ${vv_SRCS} ${tool}.cxx)
148     QT4_WRAP_CPP(vv_SRCS ${tool}.h)
149     QT4_WRAP_UI(vv_UI_CXX qt_ui/${tool}.ui)
150 endforeach(tool)
151
152 # Add the common source files
153 foreach(tool ${vv_COMMON})
154     SET(vv_SRCS ${vv_SRCS} ${tool}.cxx)
155     QT4_WRAP_CPP(vv_SRCS ${tool}.h)
156 endforeach(tool)
157
158 # if Windows and Qt was built as a static lib then don't set QT_DLL flag
159 SET(QT_STATIC 0)
160 IF (WIN32)
161   IF(EXISTS ${QT_LIBRARY_DIR}/QtCore.prl)
162     FILE(READ ${QT_LIBRARY_DIR}/QtCore.prl QT_CORE_PRL)
163     IF(${QT_CORE_PRL} MATCHES "static")
164       SET(QT_STATIC 1)
165     ENDIF(${QT_CORE_PRL} MATCHES "static")
166   ENDIF(EXISTS ${QT_LIBRARY_DIR}/QtCore.prl)
167 ENDIF(WIN32)
168 IF(NOT QT_STATIC)
169   ADD_DEFINITIONS(-DQT_DLL)
170 ENDIF(NOT QT_STATIC)
171
172 ADD_DEFINITIONS(-DQT_THREAD_SUPPORT)
173
174 INCLUDE_DIRECTORIES(
175   ${QT_INCLUDES}
176   ${QT_INCLUDE_DIR}
177   ${QT_QTGUI_INCLUDE_DIR}
178   ${QT_QTCORE_INCLUDE_DIR}
179   ${CMAKE_CURRENT_BINARY_DIR}
180   ${CMAKE_CURRENT_SOURCE_DIR}
181 )
182 #=========================================================
183
184 #=========================================================
185 #support for parallel deformable registration with OpenMP
186 IF(NOT APPLE)
187 IF(CMAKE_COMPILER_IS_GNUCC)
188   SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")
189 ENDIF(CMAKE_COMPILER_IS_GNUCC)
190 ENDIF(NOT APPLE)
191 #=========================================================
192
193 #=========================================================
194 INCLUDE_DIRECTORIES(
195   ../common
196   ../tools
197   ../segmentation
198   )
199
200 LINK_DIRECTORIES(${QT_LIBRARY_DIR})
201
202 #=========================================================
203 #Add each tool's dependencies
204 foreach(tool ${vv_TOOLS})
205   SET(toolLibs ${toolLibs} ${${tool}_LIBS})
206 endforeach(tool)
207
208 #=========================================================
209 #Add Foundation Libraries (this should be after our libraries, since we depend
210 #on them)
211 SET(foundationLibraries clitkCommon ${ITK_LIBRARIES} QVTK vtkHybrid)
212
213 #=========================================================
214 # Use CxImage to create animated gifs
215 IF(CLITK_EXPERIMENTAL)
216   SET(vvCxImage clitkCxImage)
217   SET(vv_SRCS ${vv_SRCS} vvAnimatedGIFWriter.cxx)
218   INCLUDE_DIRECTORIES(${CLITK_SOURCE_DIR}/utilities/CxImage)
219   ADD_SUBDIRECTORY(${CLITK_SOURCE_DIR}/utilities/CxImage ${PROJECT_BINARY_DIR}/utilities/CxImage)
220 ENDIF(CLITK_EXPERIMENTAL)
221 #=========================================================
222
223 #=========================================================
224 #Create binary and libs for tests
225 SET(vvExternalLibs ${QT_QTNETWORK_LIBRARY} clitkSegmentationGgoLib ${toolLibs} ${foundationLibraries} ${vvCxImage})
226 # QtNetwork is required by vvRegisterForm
227
228 ADD_LIBRARY(vvLib ${vv_SRCS} ${vv_UI_CXX})
229 TARGET_LINK_LIBRARIES(vvLib ${vvExternalLibs})
230
231 IF(WIN32)
232   ADD_EXECUTABLE(vv WIN32 vv.cxx vvIcon.rc)
233 ELSE(WIN32)
234   ADD_EXECUTABLE(vv vv.cxx)
235 ENDIF(WIN32)
236
237 TARGET_LINK_LIBRARIES(vv vvLib)
238
239 #=========================================================
240 # Install options (also used by CPack)
241 INSTALL (TARGETS vv DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE)
242
243 #=========================================================
244
245 #=========================================================
246 # CPack options
247 SET(CPACK_PACKAGE_NAME "vv")
248 SET(CPACK_SOURCE_PACKAGE_FILE_NAME "vv-src")
249 SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "vv, the 4D slicer : let's jump into a new dimension !")
250 SET(CPACK_PACKAGE_VENDOR "Creatis-CLB")
251 SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ReadMe.txt")
252 SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/License.txt")
253 SET(CPACK_PACKAGE_VERSION_MAJOR "1")
254 SET(CPACK_PACKAGE_VERSION_MINOR "3")
255 SET(CPACK_PACKAGE_VERSION_PATCH "0")
256 IF(NIGHTLY)
257   SET(CPACK_PACKAGE_INSTALL_DIRECTORY "vv-nightly")
258 ELSE(NIGHTLY)
259   SET(CPACK_PACKAGE_INSTALL_DIRECTORY "vv")
260 ENDIF(NIGHTLY)
261 SET(CPACK_STRIP_FILES TRUE)
262
263 IF(WIN32)
264   # There is a bug in NSI that does not handle full unix paths properly. Make
265   # sure there is at least one set of four (4) backlasshes.
266   SET(CPACK_NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\icons\\\\ducky.ico")
267   SET(CPACK_NSIS_INSTALLED_ICON_NAME "vv.exe")
268 IF(NIGHTLY)
269   SET(CPACK_NSIS_DISPLAY_NAME "vv - The 4D slicer (nightly)")
270 ELSE(NIGHTLY)
271   SET(CPACK_NSIS_DISPLAY_NAME "vv - The 4D slicer")
272 ENDIF(NIGHTLY)
273   SET(CPACK_NSIS_HELP_LINK "http://www.creatis.insa-lyon.fr/rio/vv")
274   SET(CPACK_NSIS_URL_INFO_ABOUT "http://www.creatis.insa-lyon.fr/rio")
275   SET(CPACK_NSIS_CONTACT "vv@creatis.insa-lyon.fr")
276   SET(CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\vv.lnk\\\" \\\"$INSTDIR\\\\bin\\\\vv.exe\\\" ")
277   SET(CPACK_NSIS_DELETE_ICONS_EXTRA "Delete \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\vv.lnk\\\" ")
278   #SET(CPACK_NSIS_MODIFY_PATH ON) SR: buggy, wait for cmake updates for a fix
279   #SET(CPACK_BINARY_ZIP ON)
280 ELSE(WIN32)
281   SET(CPACK_GENERATOR "STGZ")
282   SET(CPACK_SOURCE_GENERATOR "TGZ") 
283 ENDIF(WIN32)
284 INCLUDE(CPack)
285 #=========================================================
286 #=========================================================
287 configure_file(vvConfiguration.h.in vvConfiguration.h)
288 #=========================================================