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