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