1 cmake_minimum_required(VERSION 2.4)
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 #=========================================================
10 #=========================================================
11 #List of vv tools to compile
20 vvToolConvert ## with dummy vvToolConvert.ui
23 ## these ones are for tests (not working)
25 # vvToolFooWithWidgetBase
27 # vvToolConnectedComponentLabeling
28 ## these ones are old ones
29 # vvToolExtractPatient
31 # vvToolStructureSetManager
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 SET(vvToolROIManager_LIBS clitkDicomRTStruct)
47 #=========================================================
48 # List of vv source files
50 # in COMMON_WITH_UI -> must have .h and .cxx and .ui
62 vvIntensityValueSlider
63 vvLabelImageLoaderWidget
65 vvToolSimpleInputSelectorWidget
66 vvToolInputSelectorWidget
72 vvQProgressDialogITKCommand.cxx
73 vvQDicomSeriesSelector.cxx
77 vvDeformableRegistration.cxx
79 vvInteractorStyleNavigator.cxx
87 vvSlicerManagerCommand.cxx
94 vvBinaryImageOverlayActor.cxx
95 vvStructureSetActor.cxx
101 vvToolCreatorBase.cxx
105 #=========================================================
106 # Qt related commands
107 FIND_PACKAGE(Qt4 REQUIRED)
114 vvQDicomSeriesSelector.h
116 vvStructureSetActor.h
121 QT4_WRAP_UI(vv_UI_CXX
122 qt_ui/vvHelpDialog.ui
123 qt_ui/vvDocumentation.ui
124 qt_ui/vvDicomSeriesSelector.ui
127 QT4_ADD_RESOURCES(vv_SRCS vvIcons.qrc)
129 # Add DICOM gui selector if the adequate GDCM is available
130 IF(CLITK_USE_SYSTEM_GDCM)
131 SET(vv_SRCS ${vv_SRCS}
132 vvQPacsConnection.cxx)
133 QT4_WRAP_CPP(vv_SRCS vvQPacsConnection.cxx)
134 QT4_WRAP_UI(vv_UI_CXX qt_ui/vvPacsConnection.ui)
135 ENDIF(CLITK_USE_SYSTEM_GDCM)
137 # Add the autotools in the header vvToolsList.h for initialization of the dummy
138 # variables in vv.cxx for the tools contained in vvLib
139 if(${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/vvToolsList.h)
140 file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/vvToolsList.h)
141 foreach(tool ${vv_TOOLS})
142 FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/vvToolsList.h "#include \"${tool}.h\"\n")
143 FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/vvToolsList.h "extern const vvToolCreator<${tool}> *dummy${tool};\n")
144 FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/vvToolsList.h "const vvToolCreator<${tool}> *dummy${tool}2 = dummy${tool};\n\n")
146 endif(${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/vvToolsList.h)
148 # Add the autotools and the common files ui
149 foreach(tool ${vv_TOOLS} ${vv_COMMON_WITH_UI})
150 SET(vv_SRCS ${vv_SRCS} ${tool}.cxx)
151 QT4_WRAP_CPP(vv_SRCS ${tool}.h)
152 QT4_WRAP_UI(vv_UI_CXX qt_ui/${tool}.ui)
155 # Add the common source files
156 foreach(tool ${vv_COMMON})
157 SET(vv_SRCS ${vv_SRCS} ${tool}.cxx)
158 QT4_WRAP_CPP(vv_SRCS ${tool}.h)
161 # if Windows and Qt was built as a static lib then don't set QT_DLL flag
164 IF(EXISTS ${QT_LIBRARY_DIR}/QtCore.prl)
165 FILE(READ ${QT_LIBRARY_DIR}/QtCore.prl QT_CORE_PRL)
166 IF(${QT_CORE_PRL} MATCHES "static")
168 ENDIF(${QT_CORE_PRL} MATCHES "static")
169 ENDIF(EXISTS ${QT_LIBRARY_DIR}/QtCore.prl)
172 ADD_DEFINITIONS(-DQT_DLL)
175 ADD_DEFINITIONS(-DQT_THREAD_SUPPORT)
180 ${QT_QTGUI_INCLUDE_DIR}
181 ${QT_QTCORE_INCLUDE_DIR}
182 ${CMAKE_CURRENT_BINARY_DIR}
183 ${CMAKE_CURRENT_SOURCE_DIR}
185 #=========================================================
187 #=========================================================
188 #support for parallel deformable registration with OpenMP
190 IF(CMAKE_COMPILER_IS_GNUCC)
191 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")
192 ENDIF(CMAKE_COMPILER_IS_GNUCC)
194 #=========================================================
196 #=========================================================
203 LINK_DIRECTORIES(${QT_LIBRARY_DIR})
205 #=========================================================
206 #Add each tool's dependencies
207 foreach(tool ${vv_TOOLS})
208 SET(toolLibs ${toolLibs} ${${tool}_LIBS})
211 #=========================================================
212 #Add Foundation Libraries (this should be after our libraries, since we depend
214 SET(foundationLibraries clitkCommon ${ITK_LIBRARIES} QVTK vtkHybrid)
216 #=========================================================
217 # Use CxImage to create animated gifs
218 IF(CLITK_EXPERIMENTAL)
219 SET(vvCxImage clitkCxImage)
220 SET(vv_SRCS ${vv_SRCS} vvAnimatedGIFWriter.cxx)
221 INCLUDE_DIRECTORIES(${CLITK_SOURCE_DIR}/utilities/CxImage)
222 ADD_SUBDIRECTORY(${CLITK_SOURCE_DIR}/utilities/CxImage ${PROJECT_BINARY_DIR}/utilities/CxImage)
223 ENDIF(CLITK_EXPERIMENTAL)
224 #=========================================================
226 #=========================================================
227 #Create binary and libs for tests
228 SET(vvExternalLibs ${QT_QTNETWORK_LIBRARY} clitkSegmentationGgoLib ${toolLibs} ${foundationLibraries} ${vvCxImage})
229 # QtNetwork is required by vvRegisterForm
231 ADD_LIBRARY(vvLib ${vv_SRCS} ${vv_UI_CXX})
232 TARGET_LINK_LIBRARIES(vvLib ${vvExternalLibs})
235 ADD_EXECUTABLE(vv WIN32 vv.cxx vvIcon.rc)
237 ADD_EXECUTABLE(vv vv.cxx)
240 TARGET_LINK_LIBRARIES(vv vvLib)
242 #=========================================================
243 # Install options (also used by CPack)
244 INSTALL (TARGETS vv DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE)
246 #=========================================================
248 #=========================================================
250 SET(CPACK_PACKAGE_NAME "vv")
251 SET(CPACK_SOURCE_PACKAGE_FILE_NAME "vv-src")
252 SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "vv, the 4D slicer : let's jump into a new dimension !")
253 SET(CPACK_PACKAGE_VENDOR "Creatis-CLB")
254 SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ReadMe.txt")
255 SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/License.txt")
256 SET(CPACK_PACKAGE_VERSION_MAJOR "1")
257 SET(CPACK_PACKAGE_VERSION_MINOR "3")
258 SET(CPACK_PACKAGE_VERSION_PATCH "0")
260 SET(CPACK_PACKAGE_INSTALL_DIRECTORY "vv-nightly")
262 SET(CPACK_PACKAGE_INSTALL_DIRECTORY "vv")
264 SET(CPACK_STRIP_FILES TRUE)
267 # There is a bug in NSI that does not handle full unix paths properly. Make
268 # sure there is at least one set of four (4) backlasshes.
269 SET(CPACK_NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\icons\\\\ducky.ico")
270 SET(CPACK_NSIS_INSTALLED_ICON_NAME "vv.exe")
272 SET(CPACK_NSIS_DISPLAY_NAME "vv - The 4D slicer (nightly)")
274 SET(CPACK_NSIS_DISPLAY_NAME "vv - The 4D slicer")
276 SET(CPACK_NSIS_HELP_LINK "http://www.creatis.insa-lyon.fr/rio/vv")
277 SET(CPACK_NSIS_URL_INFO_ABOUT "http://www.creatis.insa-lyon.fr/rio")
278 SET(CPACK_NSIS_CONTACT "vv@creatis.insa-lyon.fr")
279 SET(CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\vv.lnk\\\" \\\"$INSTDIR\\\\bin\\\\vv.exe\\\" ")
280 SET(CPACK_NSIS_DELETE_ICONS_EXTRA "Delete \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\vv.lnk\\\" ")
281 #SET(CPACK_NSIS_MODIFY_PATH ON) SR: buggy, wait for cmake updates for a fix
282 #SET(CPACK_BINARY_ZIP ON)
284 SET(CPACK_GENERATOR "STGZ")
285 SET(CPACK_SOURCE_GENERATOR "TGZ")
288 #=========================================================
289 #=========================================================
290 configure_file(vvConfiguration.h.in vvConfiguration.h)
291 #=========================================================