]> Creatis software - clitk.git/blob - vv/CMakeLists.txt
remove tools (now in tests_dav)
[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   vvSaveState.cxx
98   vvReadState.cxx
99   vvROIActor.cxx
100   vvBlendImageActor.cxx
101   vvToolManager.cxx
102   vvToolCreatorBase.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   vvThreadedFilter.h
117   vvStructureSetActor.h
118   vvROIActor.h
119   vvToolCreatorBase.h
120   )
121
122 QT4_WRAP_UI(vv_UI_CXX 
123   qt_ui/vvHelpDialog.ui 
124   qt_ui/vvDocumentation.ui 
125   qt_ui/vvDicomSeriesSelector.ui 
126   qt_ui/vvDummyWindow.ui #For testing
127   )
128
129 QT4_ADD_RESOURCES(vv_SRCS vvIcons.qrc)
130
131 # Add the autotools in the header vvToolsList.h for initialization of the dummy
132 # variables in vv.cxx for the tools contained in vvLib
133 if(${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/vvToolsList.h)
134   file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/vvToolsList.h)
135   foreach(tool ${vv_TOOLS})
136     FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/vvToolsList.h "#include \"${tool}.h\"\n")
137     FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/vvToolsList.h "extern const vvToolCreator<${tool}> *dummy${tool};\n")
138     FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/vvToolsList.h "const vvToolCreator<${tool}> *dummy${tool}2 = dummy${tool};\n\n")
139   endforeach(tool)
140 endif(${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/vvToolsList.h)
141
142 # Add the autotools and the common files ui
143 foreach(tool ${vv_TOOLS} ${vv_COMMON_WITH_UI})
144     SET(vv_SRCS ${vv_SRCS} ${tool}.cxx)
145     QT4_WRAP_CPP(vv_SRCS ${tool}.h)
146     QT4_WRAP_UI(vv_UI_CXX qt_ui/${tool}.ui)
147 endforeach(tool)
148
149 # Add the common source files
150 foreach(tool ${vv_COMMON})
151     SET(vv_SRCS ${vv_SRCS} ${tool}.cxx)
152     QT4_WRAP_CPP(vv_SRCS ${tool}.h)
153 endforeach(tool)
154
155 # if Windows and Qt was built as a static lib then don't set QT_DLL flag
156 SET(QT_STATIC 0)
157 IF (WIN32)
158   IF(EXISTS ${QT_LIBRARY_DIR}/QtCore.prl)
159     FILE(READ ${QT_LIBRARY_DIR}/QtCore.prl QT_CORE_PRL)
160     IF(${QT_CORE_PRL} MATCHES "static")
161       SET(QT_STATIC 1)
162     ENDIF(${QT_CORE_PRL} MATCHES "static")
163   ENDIF(EXISTS ${QT_LIBRARY_DIR}/QtCore.prl)
164 ENDIF(WIN32)
165 IF(NOT QT_STATIC)
166   ADD_DEFINITIONS(-DQT_DLL)
167 ENDIF(NOT QT_STATIC)
168
169 ADD_DEFINITIONS(-DQT_THREAD_SUPPORT)
170
171 INCLUDE_DIRECTORIES(
172   ${QT_INCLUDES}
173   ${QT_INCLUDE_DIR}
174   ${QT_QTGUI_INCLUDE_DIR}
175   ${QT_QTCORE_INCLUDE_DIR}
176   ${CMAKE_CURRENT_BINARY_DIR}
177   ${CMAKE_CURRENT_SOURCE_DIR}
178 )
179 #=========================================================
180
181 #=========================================================
182 #support for parallel deformable registration with OpenMP
183 IF(NOT APPLE)
184 IF(CMAKE_COMPILER_IS_GNUCC)
185   SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")
186 ENDIF(CMAKE_COMPILER_IS_GNUCC)
187 ENDIF(NOT APPLE)
188 #=========================================================
189
190 #=========================================================
191 INCLUDE_DIRECTORIES(
192   ../common
193   ../tools
194   ../segmentation
195   )
196
197 LINK_DIRECTORIES(${QT_LIBRARY_DIR})
198 #=========================================================
199 #Add each tool's dependencies
200 foreach(tool ${vv_TOOLS})
201   SET(toolLibs ${toolLibs} ${${tool}_LIBS})
202 endforeach(tool)
203 #=========================================================
204 #Add Foundation Libraries (this should be after our libraries, since we depend
205 #on them)
206 SET(foundationLibraries clitkCommon ${ITK_LIBRARIES} QVTK vtkHybrid)
207
208 #=========================================================
209 #Create binary and libs for tests
210 SET(vvExternalLibs ${QT_QTNETWORK_LIBRARY} clitkSegmentationGgoLib clitkDicomRTStruct ${toolLibs} ${foundationLibraries})
211 # QtNetwork is required by vvRegisterForm
212
213 ADD_LIBRARY(vvLib ${vv_SRCS} ${vv_UI_CXX})
214 TARGET_LINK_LIBRARIES(vvLib ${vvExternalLibs})
215
216 IF(WIN32)
217   ADD_EXECUTABLE(vv WIN32 vv.cxx vvIcon.rc)
218 ELSE(WIN32)
219   ADD_EXECUTABLE(vv vv.cxx)
220 ENDIF(WIN32)
221
222 #TARGET_LINK_LIBRARIES(vv vvLib)
223 TARGET_LINK_LIBRARIES(vv vvLib)
224
225
226 #=========================================================
227 # Install options (also used by CPack)
228 IF(UNIX AND NOT APPLE)
229   SET_TARGET_PROPERTIES(vv
230     PROPERTIES INSTALL_RPATH "${VTK_DIR}:${ITK_DIR}")
231   INSTALL (TARGETS vv DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE)
232   #  INSTALL (FILES ${CMAKE_CURRENT_SOURCE_DIR}/icons/ducky.png DESTINATION .)
233
234   #QT
235   #FOREACH(LIB QtCore QtGui QtOpenGL QtNetwork QtSql)
236   #  INSTALL(FILES "${QT_LIBRARY_DIR}/lib${LIB}.so.${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH}"
237   #          RENAME "lib${LIB}.so.${QT_VERSION_MAJOR}"
238   #          DESTINATION .)
239   #ENDFOREACH(LIB)
240 ENDIF(UNIX AND NOT APPLE)
241
242 IF(WIN32)
243   #INCLUDE(InstallRequiredSystemLibraries)
244   INSTALL(FILES ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_BUILD_TYPE}/vv.exe DESTINATION .)
245   #INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/icons/ducky.png DESTINATION .)
246 ENDIF(WIN32)
247 #=========================================================
248
249 #=========================================================
250 # CPack options
251 SET(CPACK_PACKAGE_NAME "vv")
252 SET(CPACK_SOURCE_PACKAGE_FILE_NAME "vv-src")
253 SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "vv, the 4D slicer : let's jump into a new dimension !")
254 SET(CPACK_PACKAGE_VENDOR "Creatis-CLB")
255 SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ReadMe.txt")
256 SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/License.txt")
257 SET(CPACK_PACKAGE_VERSION_MAJOR "1")
258 SET(CPACK_PACKAGE_VERSION_MINOR "2")
259 SET(CPACK_PACKAGE_VERSION_PATCH "2")
260 SET(CPACK_PACKAGE_INSTALL_DIRECTORY "vv")
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 "${CMAKE_BUILD_TYPE}\\\\vv.exe")
268   SET(CPACK_NSIS_DISPLAY_NAME "vv - The 4D slicer")
269   SET(CPACK_NSIS_HELP_LINK "http://www.creatis.insa-lyon.fr/rio/vv")
270   SET(CPACK_NSIS_URL_INFO_ABOUT "http://www.creatis.insa-lyon.fr/rio")
271   SET(CPACK_NSIS_CONTACT "vv@creatis.insa-lyon.fr")
272   SET(CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\vv.lnk\\\" \\\"$INSTDIR\\\\vv.exe\\\" ")
273   SET(CPACK_NSIS_DELETE_ICONS_EXTRA "Delete \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\vv.lnk\\\" ")
274   #SET(CPACK_NSIS_MODIFY_PATH ON) SR: buggy, wait for cmake updates for a fix
275   #SET(CPACK_BINARY_ZIP ON)
276 ELSE(WIN32)
277   SET(CPACK_GENERATOR "STGZ")
278   SET(CPACK_SOURCE_GENERATOR "TGZ") 
279 ENDIF(WIN32)
280 INCLUDE(CPack)
281 #=========================================================
282 #=========================================================
283 configure_file(vvConfiguration.h.in vvConfiguration.h)
284 #=========================================================