Computer Assited Medical Intervention Tool Kit  version 3.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
CamiTKCEPPackaging.h
Go to the documentation of this file.
1 # \param DESCRIPTION Some comments on what is this CEP package about
29 
30 # CEP Packaging only works for stand-alone CEP
31 if (NOT CAMITK_EXTENSION_PROJECT_SET)
32 
33 parse_arguments(CAMITK_CEP_PACKAGING
34  "NAMEVENDORCONTACTAPPLICATIONSDESCRIPTIONLICENSE" # possible lists
35  "" # possible option
36  ${ARGN}
37 )
38 
39 # package named
40 if (CAMITK_CEP_PACKAGING_NAME)
41  set(PACKAGING_NAME ${CAMITK_CEP_PACKAGING_NAME})
42 else()
43  # package name is project name
44  set(PACKAGING_NAME ${CMAKE_PROJECT_NAME})
45 endif()
46 string(TOLOWER ${PACKAGING_NAME} CPACK_PACKAGE_NAME)
47 set(CPACK_PACKAGE_VERSION_MAJOR ${CAMITK_VERSION_MAJOR})
48 set(CPACK_PACKAGE_VERSION_MINOR ${CAMITK_VERSION_MINOR})
49 set(CPACK_PACKAGE_VERSION_PATCH "0")
50 string(TOLOWER "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}-${LSB_DISTRIB}_${CPACK_PACKAGE_ARCHITECTURE}" CPACK_PACKAGE_FILE_NAME)
51 
52 # contact information
53 if (CAMITK_CEP_PACKAGING_VENDOR)
54  set(CPACK_PACKAGE_VENDOR ${CAMITK_CEP_PACKAGING_VENDOR})
55 else()
56  set(CPACK_PACKAGE_VENDOR "UJF-Grenoble 1, CNRS, TIMC-IMAG UMR 5525")
57 endif()
58 if (CAMITK_CEP_PACKAGING_CONTACT)
59  set(CPACK_PACKAGE_CONTACT ${CAMITK_CEP_PACKAGING_CONTACT})
60 else()
61  set(CPACK_PACKAGE_CONTACT "http://camitk.imag.fr")
62 endif()
63 
64 # resource files
65 if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/README")
66  set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README")
67 endif()
68 if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/COPYRIGHT")
69  set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYRIGHT")
70 endif()
71 
72 # applications / executable
73 set(EXECUTABLES_TO_PACKAGE)
74 foreach(APPLICATION_TARGET_NAME ${CAMITK_APPLICATION_TARGETS})
75  # name and label are the same
76  set(EXECUTABLES_TO_PACKAGE ${EXECUTABLES_TO_PACKAGE} ${APPLICATION_TARGET_NAME} ${APPLICATION_TARGET_NAME})
77 endforeach()
78 set(CPACK_PACKAGE_EXECUTABLES ${EXECUTABLES_TO_PACKAGE})
79 
80 # package description
81 set(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${CAMITK_CEP_PACKAGING_DESCRIPTION})
82 
83 # Files to ignore during generation of the package
84 set(CPACK_SOURCE_IGNORE_FILES
85 "~$"
86 "/CVS/"
87 "tags"
88 "/\\\\.svn/"
89 "/\\\\.git/"
90 "/kdev4$/"
91 "/build/"
92 "\\\\.kdevses$"
93 "\\\\.kdev4$"
94 "\\\\.kdevelop\\\\.pcs$"
95 ".DS_Store"
96 ${CPACK_SOURCE_IGNORE_FILES}
97 )
98 
99 set(CPACK_SOURCE_GENERATOR "TGZ" "ZIP" )
100 
101 # ----------------------------------
102 # Unix packages (Ubuntu and Debian)
103 # ----------------------------------
104 if (UNIX AND NOT WIN32)
105 
106  message(STATUS "Packaging ${CPACK_PACKAGE_NAME} for UNIX systems")
107  # Try to find architecture
108  execute_process(COMMAND uname -m OUTPUT_VARIABLE CPACK_PACKAGE_ARCHITECTURE)
109  string(STRIP "${CPACK_PACKAGE_ARCHITECTURE}" CPACK_PACKAGE_ARCHITECTURE)
110  # Try to find distro name and distro-specific arch
111  execute_process(COMMAND lsb_release -is OUTPUT_VARIABLE LSB_ID)
112  execute_process(COMMAND lsb_release -rs OUTPUT_VARIABLE LSB_RELEASE)
113  string(STRIP "${LSB_ID}" LSB_ID)
114  string(STRIP "${LSB_RELEASE}" LSB_RELEASE)
115  set(LSB_DISTRIB "${LSB_ID}${LSB_RELEASE}")
116  if(NOT LSB_DISTRIB)
117  set(LSB_DISTRIB "unix")
118  endif(NOT LSB_DISTRIB)
119  message(STATUS "Packager architecture : ${LSB_DISTRIB}")
120 
121  #Find DPKG
122  find_program(DPKG
123  NAMES dpkg-deb
124  PATHS "/usr/bin" #Add paths here
125  )
126  if ( DPKG )
127  get_filename_component(DPKG_PATH ${DPKG} ABSOLUTE)
128  message(STATUS "Packaging deb using ${DPKG_PATH}: OK")
129  set(DPKG_FOUND "YES")
130  else()
131  set(DPKG_FOUND "NO")
132  endif()
133 
134  # For Debian-based distribs we want to create DEB packages.
135  if("${LSB_DISTRIB}" MATCHES "Ubuntu|Debian")
136 
137  # We need to alter the architecture names as per distro rules
138  if("${CPACK_PACKAGE_ARCHITECTURE}" MATCHES "i[3-6]86")
139  set(CPACK_PACKAGE_ARCHITECTURE i386)
140  endif()
141  if("${CPACK_PACKAGE_ARCHITECTURE}" MATCHES "x86_64")
142  set(CPACK_PACKAGE_ARCHITECTURE amd64)
143  endif()
144  # Set the dependencies based on the distrib version
145 
146  # Installation path
147  # Set the install location to "/usr"
148  # set(CAMITK_INSTALL_ROOT "/usr") # Set the CamiTK install root path in your CMake command line / GUI.
149  set(CPACK_PACKAGING_INSTALL_PREFIX "/usr")
150  set(CPACK_PACKAGE_DEFAULT_LOCATION "/usr")
151  set(CPACK_SET_DESTDIR TRUE)
152 
153  # Dependencies depending on the Operating System.
154  # Ubuntu11.10
155  if("${LSB_DISTRIB}" MATCHES "Ubuntu11.10")
156  set(CPACK_DEBIAN_PACKAGE_DEPENDS "libqt4-dev, libinsighttoolkit3.20, libxml2, libvtk5.6-qt4, libxerces-c3.1 ")
157  endif()
158  # For Ubuntu12.04
159  if("${LSB_DISTRIB}" MATCHES "Ubuntu12.04")
160  set(LSB_DISTRIB "Ubuntu12.xx")
161  set(CPACK_DEBIAN_PACKAGE_DEPENDS "libqt4-dev, libinsighttoolkit3.20, libxml2, libvtk5.8-qt4, libxerces-c3.1 ")
162  endif()
163  if("${LSB_DISTRIB}" MATCHES "Ubuntu12.04.1")
164  set(LSB_DISTRIB "Ubuntu12.xx")
165  set(CPACK_DEBIAN_PACKAGE_DEPENDS "libqt4-dev, libinsighttoolkit3.20, libxml2, libvtk5.8-qt4, libxerces-c3.1 ")
166  endif()
167  # For Ubuntu12.10
168  if("${LSB_DISTRIB}" MATCHES "Ubuntu12.10")
169  set(LSB_DISTRIB "Ubuntu12.xx")
170  set(CPACK_DEBIAN_PACKAGE_DEPENDS "libqt4-dev, libinsighttoolkit3.20, libxml2, libvtk5.8-qt4, libxerces-c3.1 ")
171  endif()
172 
173  # TODO Debian dependencies (see CamiTKPackaging.cmake)
174 
175  if(NOT CPACK_DEBIAN_PACKAGE_DEPENDS)
176  message(STATUS "Packaging for ${LSB_DISTRIB} not supported yet.\nPlease set deps in cmake/darktable-packaging.cmake before packaging.")
177  endif()
178 
179  endif()
180 
181  # package name
182  string(TOLOWER "${CPACK_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}-${LSB_DISTRIB}_${CPACK_PACKAGE_ARCHITECTURE}" CPACK_PACKAGE_FILE_NAME)
183 
184 endif()
185 
186 
187 
188 if(WIN32 AND NOT UNIX)
189  # -----------------------
190  # NSIS Windows installer
191  # -----------------------
192 
193  # Update package name for windows release
194  set(LSB_DISTRIB "win32")
195  set(CPACK_PACKAGE_ARCHITECTURE i386)
196  string(TOLOWER "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}-${CAMITK_VER_NICKNAME}-${LSB_DISTRIB}" CPACK_PACKAGE_FILE_NAME)
197 
198  # Try to find Makensis on Linux distribution
199  find_program(MAKENSIS
200  NAMES makensis
201  PATHS "/usr/bin"
202  )
203 
204  if(MAKENSIS)
205  set(ITK_ROOT_DIR "C:/dev/ITK/3.20.1")
206 
207  # MinGW compiler
208  if ("${CMAKE_GENERATOR}" MATCHES "MinGW Makefiles")
209  # NSIS Windows installer
210  message(STATUS "Packaging nsis using ${MAKENSIS} with MinGW compiler")
211  # Qt dependencies
212  set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS
213  ##TODO use GetPrerequisites.cmake (i.e. find a better way to list dependencies)
214  ##get_prerequisites() is not well enough documented to justify the time investement - EP May 2011
215  ${QT_BINARY_DIR}/QtCore4.dll
216  ${QT_BINARY_DIR}/QtGui4.dll
217  ${QT_BINARY_DIR}/QtSvg4.dll
218  ${QT_BINARY_DIR}/QtXml4.dll
219  ${QT_BINARY_DIR}/QtNetwork4.dll
220  ${QT_BINARY_DIR}/QtSql4.dll
221  ${QT_BINARY_DIR}/QtWebKit4.dll
222  # VTK dependencies
223  ${VTK_LIBRARY_DIRS}/libQVTK.dll
224  ${VTK_LIBRARY_DIRS}/libvtkCommon.dll
225  ${VTK_LIBRARY_DIRS}/libvtksys.dll
226  ${VTK_LIBRARY_DIRS}/libvtkFiltering.dll
227  ${VTK_LIBRARY_DIRS}/libvtkGraphics.dll
228  ${VTK_LIBRARY_DIRS}/libvtkHybrid.dll
229  ${VTK_LIBRARY_DIRS}/libvtkIO.dll
230  ${VTK_LIBRARY_DIRS}/libvtkImaging.dll
231  ${VTK_LIBRARY_DIRS}/libvtkRendering.dll
232  ${VTK_LIBRARY_DIRS}/libvtkVolumeRendering.dll
233  ${VTK_LIBRARY_DIRS}/libvtkverdict.dll
234  ${VTK_LIBRARY_DIRS}/libvtkDICOMParser.dll
235  ${VTK_LIBRARY_DIRS}/libvtkNetCDF.dll
236  ${VTK_LIBRARY_DIRS}/libvtkNetCDF_cxx.dll
237  ${VTK_LIBRARY_DIRS}/libvtkexpat.dll
238  ${VTK_LIBRARY_DIRS}/libvtkjpeg.dll
239  ${VTK_LIBRARY_DIRS}/libvtkmetaio.dll
240  ${VTK_LIBRARY_DIRS}/libvtkpng.dll
241  ${VTK_LIBRARY_DIRS}/libvtktiff.dll
242  ${VTK_LIBRARY_DIRS}/libvtkzlib.dll
243  ${VTK_LIBRARY_DIRS}/libvtkInfovis.dll
244  ${VTK_LIBRARY_DIRS}/libvtkfreetype.dll
245  ${VTK_LIBRARY_DIRS}/libvtkftgl.dll
246  ${VTK_LIBRARY_DIRS}/libvtkalglib.dll
247  ${VTK_LIBRARY_DIRS}/libvtklibxml2.dll
248  ${VTK_LIBRARY_DIRS}/libvtkViews.dll
249  ${VTK_LIBRARY_DIRS}/libvtkexoIIc.dll
250  ${VTK_LIBRARY_DIRS}/libvtkWidgets.dll
251  ${VTK_LIBRARY_DIRS}/vtkhdf5.dll
252  ${VTK_LIBRARY_DIRS}/vtkhdf5_hl.dll
253  ${VTK_LIBRARY_DIRS}/libLSDyna.dll
254  # Xerces-c dependency
255  # ${XERCESC_ROOT_DIR}/bin/xerces-c_3_1.dll
256  # Libxml2 dependencies
257  # ${LIBXML2_INCLUDE_DIR}/../bin/iconv.dll
258  C:/dev/libxml2/2.8/bin/libxml2-2.dll
259  # ${LIBXML2_INCLUDE_DIR}/../bin/zlib1.dll
260  # ITK dependency
261  ${ITK_ROOT_DIR}/bin/libITKAlgorithms.dll
262  ${ITK_ROOT_DIR}/bin/libITKCommon.dll
263  ${ITK_ROOT_DIR}/bin/libITKBasicFilters.dll
264  ${ITK_ROOT_DIR}/lib/InsightToolkit/libitksys.dll
265  ${ITK_ROOT_DIR}/bin/libitkvnl.dll
266  ${ITK_ROOT_DIR}/bin/libitkvnl_algo.dll
267  ${ITK_ROOT_DIR}/bin/libITKIO.dll
268  ${ITK_ROOT_DIR}/bin/libitkv3p_lsqr.dll
269  ${ITK_ROOT_DIR}/bin/libitkv3p_netlib.dll
270  ${ITK_ROOT_DIR}/bin/libITKDICOMParser.dll
271  ${ITK_ROOT_DIR}/bin/libITKEXPAT.dll
272  ${ITK_ROOT_DIR}/bin/libitkgdcm.dll
273  ${ITK_ROOT_DIR}/bin/libitkjpeg8.dll
274  ${ITK_ROOT_DIR}/bin/libITKMetaIO.dll
275  ${ITK_ROOT_DIR}/bin/libITKniftiio.dll
276  ${ITK_ROOT_DIR}/bin/libITKNrrdIO.dll
277  ${ITK_ROOT_DIR}/bin/libitkpng.dll
278  ${ITK_ROOT_DIR}/bin/libitktiff.dll
279  ${ITK_ROOT_DIR}/bin/libitkzlib.dll
280  ${ITK_ROOT_DIR}/bin/libitkjpeg12.dll
281  ${ITK_ROOT_DIR}/bin/libitkjpeg16.dll
282  ${ITK_ROOT_DIR}/bin/libitkopenjpeg.dll
283  ${ITK_ROOT_DIR}/bin/libITKznz.dll
284  # MinGW Dependencies
285  C:/dev/MinGW/bin/libgcc_s_dw2-1.dll
286  C:/dev/MinGW/bin/libstdc++-6.dll
287  C:/dev/MinGW/bin/mingwm10.dll
288  )
289 
290  endif()
291 
292  # MSVC compiler
293  if (MSVC)
294 
295  message(STATUS "Packaging nsis using ${MAKENSIS} with MSVC compiler")
296 
297  set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS
298  ##TODO use GetPrerequisites.cmake (i.e. find a better way to list dependencies)
299  ##get_prerequisites() is not well enough documented to justify the time investement - EP May 2011
300  # Qt dependencies
301  ${QT_BINARY_DIR}/QtCore4.dll
302  ${QT_BINARY_DIR}/QtGui4.dll
303  ${QT_BINARY_DIR}/QtSvg4.dll
304  ${QT_BINARY_DIR}/QtXml4.dll
305  ${QT_BINARY_DIR}/QtNetwork4.dll
306  ${QT_BINARY_DIR}/QtSql4.dll
307  ${QT_BINARY_DIR}/QtWebKit4.dll
308  # VTK dependencies
309  ${VTK_DIR}/../../bin/QVTK.dll
310  ${VTK_DIR}/../../bin/vtkCommon.dll
311  ${VTK_DIR}/../../bin/vtksys.dll
312  ${VTK_DIR}/../../bin/vtkFiltering.dll
313  ${VTK_DIR}/../../bin/vtkGraphics.dll
314  ${VTK_DIR}/../../bin/vtkHybrid.dll
315  ${VTK_DIR}/../../bin/vtkIO.dll
316  ${VTK_DIR}/../../bin/vtkImaging.dll
317  ${VTK_DIR}/../../bin/vtkRendering.dll
318  ${VTK_DIR}/../../bin/vtkVolumeRendering.dll
319  ${VTK_DIR}/../../bin/vtkverdict.dll
320  ${VTK_DIR}/../../bin/vtkDICOMParser.dll
321  ${VTK_DIR}/../../bin/vtkNetCDF.dll
322  ${VTK_DIR}/../../bin/vtkNetCDF_cxx.dll
323  ${VTK_DIR}/../../bin/vtkexpat.dll
324  ${VTK_DIR}/../../bin/vtkjpeg.dll
325  ${VTK_DIR}/../../bin/vtkmetaio.dll
326  ${VTK_DIR}/../../bin/vtkpng.dll
327  ${VTK_DIR}/../../bin/vtktiff.dll
328  ${VTK_DIR}/../../bin/vtkzlib.dll
329  ${VTK_DIR}/../../bin/vtkInfovis.dll
330  ${VTK_DIR}/../../bin/vtkfreetype.dll
331  ${VTK_DIR}/../../bin/vtkftgl.dll
332  ${VTK_DIR}/../../bin/vtkalglib.dll
333  ${VTK_DIR}/../../bin/vtklibxml2.dll
334  ${VTK_DIR}/../../bin/vtkViews.dll
335  ${VTK_DIR}/../../bin/vtkexoIIc.dll
336  ${VTK_DIR}/../../bin/vtkWidgets.dll
337  ${VTK_DIR}/../../bin/vtkhdf5.dll
338  ${VTK_DIR}/../../bin/vtkhdf5_hl.dll
339  ${VTK_DIR}/../../bin/LSDyna.dll
340  # Xerces-c dependency
341  ${XERCESC_ROOT_DIR}/bin/xerces-c_3_1.dll
342  # Libxml2 dependencies
343  ${LIBXML2_INCLUDE_DIR}/../bin/iconv.dll
344  ${LIBXML2_INCLUDE_DIR}/../bin/libxml2.dll
345  ${LIBXML2_INCLUDE_DIR}/../bin/zlib1.dll
346  # ITK dependency
347  ${ITK_DIR}/../../bin/ITKCommon.dll
348  )
349  endif()
350 
351  # Copy those dependencies DLLs if packaging on Windows.
352  if (PACKAGING_NSIS)
353  include(InstallRequiredSystemLibraries)
354  endif()
355 
356  # Application icon
357  set(CAMITK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\core\\\\resources\\\\appIcon.ico") #set here the current icon for CamiTK apps
358  set(CPACK_PACKAGE_ICON ${CAMITK_PACKAGE_ICON}) #icon for the top bar NSIS installer
359  set(CPACK_NSIS_MUI_ICON ${CAMITK_PACKAGE_ICON}) #icon for the generated install program (the .exe to run to install CamiTK).
360  set(CPACK_NSIS_MUI_UNIICON ${CAMITK_PACKAGE_ICON}) #icon for the generated uninstall program (the .exe to run to uninstall CamiTK).
361 
362 
363  # Installer name
364  set(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_NAME} ${CAMITK_VERSION_MAJOR}.${CAMITK_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
365  set(CPACK_NSIS_INSTALLED_ICON_NAME ${CPACK_PACKAGE_NAME})
366 
367  set(CPACK_PACKAGE_INSTALL_DIRECTORY ${CPACK_PACKAGE_NAME})
368  set(CPACK_NSIS_HELP_LINK "http:\\\\\\\\camitk.imag.fr")
369  set(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\camitk.imag.fr")
370  set(CPACK_NSIS_CONTACT ${CPACK_PACKAGE_CONTACT})
371  include(InstallRequiredSystemLibraries)
372  else()
373  message(STATUS "Can not find makensis: nsis packaging is not possible")
374  endif()
375 
376 endif()
377 
378 # ---------------
379 # Mac App Bundle
380 # ---------------
381 if(APPLE)
382  # TODO test this!
383  set(CPACK_GENERATOR "PackageMaker")
384  # Libraries are bundled directly
385  set(CPACK_COMPONENT_LIBRARIES_HIDDEN TRUE)
386  # Bundle Properties
387  set(MACOSX_BUNDLE_BUNDLE_NAME ${CPACK_PACKAGE_NAME})
388  set(MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION})
389  set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION})
390  set(MACOSX_BUNDLE_LONG_VERSION_STRING "Version ${PROJECT_VERSION}")
391 endif()
392 
393 # and here we go...
394 include(CPack)
395 
396 # ----------------------------
397 # CamiTK's own package (.cep)
398 # ----------------------------
399 # TODO install a CEP in CamiTK
400 # TODO CamiTK Market Place
401 set(CEP_PACKAGING_DIR "${CMAKE_BINARY_DIR}/CamiTKExtensionPackage")
402 set(CEP_PACKAGE_NAME "${CPACK_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.cep")
403 
404 add_custom_target(camitk_extension_${PROJECT_NAME}_package
405  # configure for packaging
406  COMMAND ${CMAKE_COMMAND} -DPACKAGING_NSIS:BOOL=ON ${CMAKE_BINARY_DIR}
407  # build first
408  COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR}
409  # clean CEP package structure
410  COMMAND ${CMAKE_COMMAND} -E remove_directory "${CEP_PACKAGING_DIR}"
411  COMMAND ${CMAKE_COMMAND} -E remove -f ${CMAKE_BINARY_DIR}/${CEP_PACKAGE_NAME}
412  COMMAND ${CMAKE_COMMAND} -E make_directory "${CEP_PACKAGING_DIR}"
413  COMMAND ${CMAKE_COMMAND} -E make_directory "${CEP_PACKAGING_DIR}/share/${CAMITK_SHORT_VERSION_STRING}/cep"
414  # copy all cep files
415  COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_BINARY_DIR}/lib" "${CEP_PACKAGING_DIR}/lib"
416  COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_BINARY_DIR}/bin" "${CEP_PACKAGING_DIR}/bin"
417  COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_BINARY_DIR}/include" "${CEP_PACKAGING_DIR}/include"
418  COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_BINARY_DIR}/share" "${CEP_PACKAGING_DIR}/share"
419  # copy cep manifest
420  COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_BINARY_DIR}/CEPPackageManifest.xml ${CEP_PACKAGING_DIR}/share/${CAMITK_SHORT_VERSION_STRING}/cep/${CPACK_PACKAGE_NAME}.xml
421  # compress
422  COMMAND ${CMAKE_COMMAND} -E tar cvz "${CMAKE_BINARY_DIR}/${CEP_PACKAGE_NAME}" "${CEP_PACKAGING_DIR}/"
423  WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
424  # configure back for normal build
425  COMMAND ${CMAKE_COMMAND} -DPACKAGING_NSIS:BOOL=OFF ${CMAKE_BINARY_DIR}
426  COMMENT "Building ${CEP_PACKAGE_NAME}"
427 )
428 
429 #-- Build Manifest
430 # get the time stamp
431 execute_process(COMMAND "${CAMITK_DIR}/bin/camitk-config" "--timeStamp"
432  RESULT_VARIABLE CAMITK_CONFIG_TIMESTAMP_RETURN_CODE
433  OUTPUT_VARIABLE CAMITK_CONFIG_TIMESTAMP_OUTPUT
434  ERROR_VARIABLE CAMITK_CONFIG_TIMESTAMP_OUTPUT_ERROR
435  OUTPUT_STRIP_TRAILING_WHITESPACE
436  ERROR_STRIP_TRAILING_WHITESPACE
437 )
438 
439 # Generate XML
440 set(CEP_PACKAGE_MANIFEST_XML "<?xml version=\"1.0\"?>\n<cep>")
441 set(CEP_PACKAGE_MANIFEST_XML ${CEP_PACKAGE_MANIFEST_XML} " <!-- CamiTK Extension Project Manifest File -->")
442 set(CEP_PACKAGE_MANIFEST_XML ${CEP_PACKAGE_MANIFEST_XML} " <name>${CPACK_PACKAGE_NAME}</name>")
443 set(CEP_PACKAGE_MANIFEST_XML ${CEP_PACKAGE_MANIFEST_XML} " <contact>${CAMITK_CEP_PACKAGING_CONTACT}</contact>")
444 set(CEP_PACKAGE_MANIFEST_XML ${CEP_PACKAGE_MANIFEST_XML} " <description>${CAMITK_CEP_PACKAGING_DESCRIPTION}</description>")
445 set(CEP_PACKAGE_MANIFEST_XML ${CEP_PACKAGE_MANIFEST_XML} " <license>${CAMITK_CEP_PACKAGING_LICENSE}</license>")
446 if (NOT CAMITK_CONFIG_TIMESTAMP_RETURN_CODE)
447  set(CEP_PACKAGE_MANIFEST_XML ${CEP_PACKAGE_MANIFEST_XML} " <timeStamp>${CAMITK_CONFIG_TIMESTAMP_OUTPUT}</timeStamp>")
448 endif()
449 set(CEP_PACKAGE_MANIFEST_XML ${CEP_PACKAGE_MANIFEST_XML} " <actions>")
450 foreach(TARGET_NAME_ITERATOR ${CAMITK_ACTION_TARGETS})
451  string(REPLACE "action-" "" TARGET_NAME ${TARGET_NAME_ITERATOR})
452  set(CEP_PACKAGE_MANIFEST_XML ${CEP_PACKAGE_MANIFEST_XML} " <action>${TARGET_NAME}</action>")
453 endforeach()
454 set(CEP_PACKAGE_MANIFEST_XML ${CEP_PACKAGE_MANIFEST_XML} " </actions>")
455 set(CEP_PACKAGE_MANIFEST_XML ${CEP_PACKAGE_MANIFEST_XML} " <components>")
456 foreach(TARGET_NAME_ITERATOR ${CAMITK_COMPONENT_TARGETS})
457  string(REPLACE "component-" "" TARGET_NAME ${TARGET_NAME_ITERATOR})
458  set(CEP_PACKAGE_MANIFEST_XML ${CEP_PACKAGE_MANIFEST_XML} " <component>${TARGET_NAME}</component>")
459 endforeach()
460 set(CEP_PACKAGE_MANIFEST_XML ${CEP_PACKAGE_MANIFEST_XML} " </components>")
461 set(CEP_PACKAGE_MANIFEST_XML ${CEP_PACKAGE_MANIFEST_XML} " <libraries>")
462 foreach(TARGET_NAME_ITERATOR ${CAMITK_CEP_LIBRARY_TARGETS})
463  set(CEP_PACKAGE_MANIFEST_XML ${CEP_PACKAGE_MANIFEST_XML} " <library>${TARGET_NAME_ITERATOR}</library>")
464 endforeach()
465 set(CEP_PACKAGE_MANIFEST_XML ${CEP_PACKAGE_MANIFEST_XML} " </libraries>")
466 set(CEP_PACKAGE_MANIFEST_XML ${CEP_PACKAGE_MANIFEST_XML} " <applications>")
467 foreach(TARGET_NAME_ITERATOR ${CAMITK_APPLICATION_TARGETS})
468  string(REPLACE "application-" "" TARGET_NAME ${TARGET_NAME_ITERATOR})
469  set(CEP_PACKAGE_MANIFEST_XML ${CEP_PACKAGE_MANIFEST_XML} " <application>${TARGET_NAME}</application>")
470 endforeach()
471 set(CEP_PACKAGE_MANIFEST_XML ${CEP_PACKAGE_MANIFEST_XML} " </applications>")
472 set(CEP_PACKAGE_MANIFEST_XML ${CEP_PACKAGE_MANIFEST_XML} "</cep>")
473 # replace all "" by \n
474 string (REGEX REPLACE "([^\\]|^)" "\\1\n" CEP_PACKAGE_MANIFEST_XML_TMP "${CEP_PACKAGE_MANIFEST_XML}")
475 string (REGEX REPLACE "[\\](.)" "\\1" CEP_PACKAGE_MANIFEST_XML_TEXT "${CEP_PACKAGE_MANIFEST_XML_TMP}") #fixes escaping
476 # write manifest
477 file(WRITE ${CMAKE_BINARY_DIR}/CEPPackageManifest.xml ${CEP_PACKAGE_MANIFEST_XML_TEXT})
478 message(STATUS "Generated CEP manifest in CEPPackageManifest.xml")
479 
480 
481 endif() # Standalone CEP
482 end(){)
bin camitk config camitkDir n mismatch required version
Definition: FindCamiTK.cmake:187
CNRS
Definition: CamiTKOpenSourcePackaging.cmake:72
OpenCVConfig cmake include("${OpenCV_DIR}/OpenCVConfig.cmake") set(CVLIB_SUFFIX"$
Definition: FindOpenCV.cmake:71
camitk_cep_packaging()
CamiTK cep packaging allows you to build a package from a CEP If README and COPYRIGHT files exists at...
Definition: CamiTKCEPPackaging.h:28
config endif() if(EXISTS"$
Definition: FindCamiTK.cmake:76
set(CAMITK_TEST_PLATEFORM ${Plateform}) set(CAMITK_SVN_SUBDIR $
Definition: CamiTKTestBuildMacros.cmake:15
CamiTK CamiTKDir txt file(STRINGS"${FIND_CAMITK_USER_BASE_DIR}/CamiTK/CamiTKDir.txt"FIND_CAMITK_USER_DIR_LAST_INSTALL) endif() find_program(CAMITK_CONFIG_EXECUTABLE NAMES camitk-config-debug camitk-config PATH_SUFFIXES"bin"PATHS"$
Definition: FindCamiTK.cmake:80
if(NOT DEFINED CTEST_SOURCE_DIRECTORY) message(FATAL_ERROR"Please provide the source directory of the continuous test with the CTEST_SOURCE_DIRECTORY argument") endif() if(NOT DEFINED CTEST_BINARY_DIRECTORY) message(FATAL_ERROR"Please provide the build directory of the continuous test with the CTEST_BINARY_DIRECTORY argument") endif() if(CAMITK_CONTINUOUS_INTEGRATION) string(REGEX REPLACE"^(.*)-.*-.*""\\1"COMPILER"$
Definition: continuous.cmake:21
message(STATUS"Looking for CamiTK ${CamiTK_FIND_VERSION}") set(CAMITK_FOUND FALSE) set(CAMITK_USE_FILE"CamiTKConfig.cmake") set(CAMITK_DIR_DESCRIPTION"directory containing a build tree or install tree of CamiTK.\n It must have the camitk-config binary in its 'bin' subdirectory.") if(WIN32) set(FIND_CAMITK_USER_BASE_DIR $ENV
Definition: FindCamiTK.cmake:54
EXTENSION_NAME parse_arguments(${EXTENSION_NAME_CMAKE}#prefix"NEEDS_TOOL;NEEDS_CEP_LIBRARIES;NEEDS_COMPONENT_EXTENSION;NEEDS_ACTION_EXTENSION;INCLUDE_DIRECTORIES;EXTERNAL_LIBRARIES;HEADERS_TO_INSTALL;DEFINES;CXX_FLAGS;EXTERNAL_SOURCES;TARGET_NAME;CEP_NAME;DESCRIPTION;TEST_APPLICATION"#possible lists"NEEDS_QT_MODULES;ACTION_EXTENSION;COMPONENT_EXTENSION;DISABLED;NEEDS_XERCESC;NEEDS_ITK;NEEDS_LIBXML2;NEEDS_XSD;NEEDS_QTXML;NEEDS_OPENCV;NEEDS_IGSTK;INSTALL_ALL_HEADERS;NEEDS_GDCM;"#possible options ${ARGN}) if($
Definition: CamiTKExtension.cmake:82
string(REGEX REPLACE"^.*-(.*)-.*""\\1"ARCH"${CAMITK_CONTINUOUS_INTEGRATION}") string(REGEX REPLACE"^.*-.*-(.*)""\\1"BUILDTYPE"$
Definition: continuous.cmake:34
libvtk5 libqt4 dev
Definition: CamiTKOpenSourcePackaging.cmake:198