]> Creatis software - clitk.git/blob - vv/CMakeLists.txt
Merge branch 'master' of git://git.creatis.insa-lyon.fr/clitk
[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   vvToolROIManager
26
27   ## these ones are for tests (not working)
28   # vvToolFoo
29   # vvToolFooWithWidgetBase
30   # vvToolPlastimatch
31   # vvToolConnectedComponentLabeling  
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
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   vvClipPolyData.cxx
83   vvGlyphSource.cxx
84   vvGlyph2D.cxx
85   vvSlicerManager.cxx
86   vvSlicerManagerCommand.cxx
87   vvUtils.cxx
88 #  vvMaximumIntensityProjection.cxx
89   vvMesh.cxx
90   vvMeshActor.cxx
91   vvMeshReader.cxx
92   vvMidPosition.cxx
93   vvImageMapToWLColors.cxx
94   vvThreadedFilter.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   vvSlicerManager.h
118   vvThreadedFilter.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/vvDummyWindow.ui #For testing
129   )
130
131 QT4_ADD_RESOURCES(vv_SRCS vvIcons.qrc)
132
133 # Add the autotools in the header vvToolsList.h for initialization of the dummy
134 # variables in vv.cxx for the tools contained in vvLib
135 if(${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/vvToolsList.h)
136   file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/vvToolsList.h)
137   foreach(tool ${vv_TOOLS})
138     FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/vvToolsList.h "#include \"${tool}.h\"\n")
139     FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/vvToolsList.h "extern const vvToolCreator<${tool}> *dummy${tool};\n")
140     FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/vvToolsList.h "const vvToolCreator<${tool}> *dummy${tool}2 = dummy${tool};\n\n")
141   endforeach(tool)
142 endif(${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/vvToolsList.h)
143
144 # Add the autotools and the common files ui
145 foreach(tool ${vv_TOOLS} ${vv_COMMON_WITH_UI})
146     SET(vv_SRCS ${vv_SRCS} ${tool}.cxx)
147     QT4_WRAP_CPP(vv_SRCS ${tool}.h)
148     QT4_WRAP_UI(vv_UI_CXX qt_ui/${tool}.ui)
149 endforeach(tool)
150
151 # Add the common source files
152 foreach(tool ${vv_COMMON})
153     SET(vv_SRCS ${vv_SRCS} ${tool}.cxx)
154     QT4_WRAP_CPP(vv_SRCS ${tool}.h)
155 endforeach(tool)
156
157 # if Windows and Qt was built as a static lib then don't set QT_DLL flag
158 SET(QT_STATIC 0)
159 IF (WIN32)
160   IF(EXISTS ${QT_LIBRARY_DIR}/QtCore.prl)
161     FILE(READ ${QT_LIBRARY_DIR}/QtCore.prl QT_CORE_PRL)
162     IF(${QT_CORE_PRL} MATCHES "static")
163       SET(QT_STATIC 1)
164     ENDIF(${QT_CORE_PRL} MATCHES "static")
165   ENDIF(EXISTS ${QT_LIBRARY_DIR}/QtCore.prl)
166 ENDIF(WIN32)
167 IF(NOT QT_STATIC)
168   ADD_DEFINITIONS(-DQT_DLL)
169 ENDIF(NOT QT_STATIC)
170
171 ADD_DEFINITIONS(-DQT_THREAD_SUPPORT)
172
173 INCLUDE_DIRECTORIES(
174   ${QT_INCLUDES}
175   ${QT_INCLUDE_DIR}
176   ${QT_QTGUI_INCLUDE_DIR}
177   ${QT_QTCORE_INCLUDE_DIR}
178   ${CMAKE_CURRENT_BINARY_DIR}
179   ${CMAKE_CURRENT_SOURCE_DIR}
180 )
181 #=========================================================
182
183 #=========================================================
184 #support for parallel deformable registration with OpenMP
185 IF(NOT APPLE)
186 IF(CMAKE_COMPILER_IS_GNUCC)
187   SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")
188 ENDIF(CMAKE_COMPILER_IS_GNUCC)
189 ENDIF(NOT APPLE)
190 #=========================================================
191
192 #=========================================================
193 INCLUDE_DIRECTORIES(
194   ../common
195   ../tools
196   ../segmentation
197   )
198
199 LINK_DIRECTORIES(${QT_LIBRARY_DIR})
200 #=========================================================
201 #Add each tool's dependencies
202 foreach(tool ${vv_TOOLS})
203   SET(toolLibs ${toolLibs} ${${tool}_LIBS})
204 endforeach(tool)
205 #=========================================================
206 #Add Foundation Libraries (this should be after our libraries, since we depend
207 #on them)
208 SET(foundationLibraries clitkCommon ${ITK_LIBRARIES} QVTK vtkHybrid)
209
210 #=========================================================
211 # Use CxImage to create animated gifs
212 IF(CLITK_EXPERIMENTAL)
213   SET(vvCxImage clitkCxImage)
214   SET(vv_SRCS ${vv_SRCS} vvAnimatedGIFWriter.cxx)
215   INCLUDE_DIRECTORIES(${CLITK_SOURCE_DIR}/utilities/CxImage)
216   ADD_SUBDIRECTORY(${CLITK_SOURCE_DIR}/utilities/CxImage ${PROJECT_BINARY_DIR}/utilities/CxImage)
217 ENDIF(CLITK_EXPERIMENTAL)
218 #=========================================================
219
220 #=========================================================
221 #Create binary and libs for tests
222 SET(vvExternalLibs ${QT_QTNETWORK_LIBRARY} clitkSegmentationGgoLib clitkDicomRTStruct ${toolLibs} ${foundationLibraries} ${vvCxImage})
223 # QtNetwork is required by vvRegisterForm
224
225 ADD_LIBRARY(vvLib ${vv_SRCS} ${vv_UI_CXX})
226 TARGET_LINK_LIBRARIES(vvLib ${vvExternalLibs})
227
228 IF(WIN32)
229   ADD_EXECUTABLE(vv WIN32 vv.cxx vvIcon.rc)
230 ELSE(WIN32)
231   ADD_EXECUTABLE(vv vv.cxx)
232 ENDIF(WIN32)
233
234 #TARGET_LINK_LIBRARIES(vv vvLib)
235 TARGET_LINK_LIBRARIES(vv vvLib)
236
237
238 #=========================================================
239 # Install options (also used by CPack)
240 IF(UNIX OR APPLE)
241   SET_TARGET_PROPERTIES(vv
242     PROPERTIES INSTALL_RPATH "${VTK_DIR}:${ITK_DIR}")
243   INSTALL (TARGETS vv DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE)
244   #  INSTALL (FILES ${CMAKE_CURRENT_SOURCE_DIR}/icons/ducky.png DESTINATION .)
245
246   #QT
247   #FOREACH(LIB QtCore QtGui QtOpenGL QtNetwork QtSql)
248   #  INSTALL(FILES "${QT_LIBRARY_DIR}/lib${LIB}.so.${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH}"
249   #          RENAME "lib${LIB}.so.${QT_VERSION_MAJOR}"
250   #          DESTINATION .)
251   #ENDFOREACH(LIB)
252 ENDIF(UNIX OR APPLE)
253
254 IF(WIN32)
255   #INCLUDE(InstallRequiredSystemLibraries)
256   INSTALL(FILES ${EXECUTABLE_OUTPUT_PATH}/vv.exe DESTINATION .)
257   #INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/icons/ducky.png DESTINATION .)
258 ENDIF(WIN32)
259 #=========================================================
260
261 #=========================================================
262 # CPack options
263 SET(CPACK_PACKAGE_NAME "vv")
264 SET(CPACK_SOURCE_PACKAGE_FILE_NAME "vv-src")
265 SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "vv, the 4D slicer : let's jump into a new dimension !")
266 SET(CPACK_PACKAGE_VENDOR "Creatis-CLB")
267 SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ReadMe.txt")
268 SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/License.txt")
269 SET(CPACK_PACKAGE_VERSION_MAJOR "1")
270 SET(CPACK_PACKAGE_VERSION_MINOR "3")
271 SET(CPACK_PACKAGE_VERSION_PATCH "0")
272 SET(CPACK_PACKAGE_INSTALL_DIRECTORY "vv")
273 SET(CPACK_STRIP_FILES TRUE)
274
275 IF(WIN32)
276   # There is a bug in NSI that does not handle full unix paths properly. Make
277   # sure there is at least one set of four (4) backlasshes.
278   SET(CPACK_NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\icons\\\\ducky.ico")
279   SET(CPACK_NSIS_INSTALLED_ICON_NAME "vv.exe")
280   SET(CPACK_NSIS_DISPLAY_NAME "vv - The 4D slicer")
281   SET(CPACK_NSIS_HELP_LINK "http://www.creatis.insa-lyon.fr/rio/vv")
282   SET(CPACK_NSIS_URL_INFO_ABOUT "http://www.creatis.insa-lyon.fr/rio")
283   SET(CPACK_NSIS_CONTACT "vv@creatis.insa-lyon.fr")
284   SET(CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\vv.lnk\\\" \\\"$INSTDIR\\\\vv.exe\\\" ")
285   SET(CPACK_NSIS_DELETE_ICONS_EXTRA "Delete \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\vv.lnk\\\" ")
286   #SET(CPACK_NSIS_MODIFY_PATH ON) SR: buggy, wait for cmake updates for a fix
287   #SET(CPACK_BINARY_ZIP ON)
288 ELSE(WIN32)
289   SET(CPACK_GENERATOR "STGZ")
290   SET(CPACK_SOURCE_GENERATOR "TGZ") 
291 ENDIF(WIN32)
292 INCLUDE(CPack)
293 #=========================================================
294 #=========================================================
295 configure_file(vvConfiguration.h.in vvConfiguration.h)
296 #=========================================================