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