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