Computer Assited Medical Intervention Tool Kit  version 4.0
CamiTKInstallAllHeaders.h
Go to the documentation of this file.
43 
44  parse_arguments(CAMITK_INSTALL_ALL_HEADERS
45  "COMPONENTGROUP" # possible lists
46  "" # no possible options
47  ${ARGN}
48  )
49 
50  # The base include directories
51  set(CAMITK_INSTALL_ALL_HEADERS_BUILD_BASE_DIR ${CMAKE_BINARY_DIR}/include/${CAMITK_SHORT_VERSION_STRING})
52  set(CAMITK_INSTALL_ALL_HEADERS_INSTALL_RELATIVE_DIR include/${CAMITK_SHORT_VERSION_STRING})
53 
54  # Get action, component or library name without its prefix
55  set(CAMITK_INSTALL_ALL_HEADERS_TARGET_NAME ${CAMITK_INSTALL_ALL_HEADERS_COMPONENT})
56  string(REGEX REPLACE "^component-|^component_|^action-|^action_|^library_|^library-" "" CAMITK_INSTALL_ALL_HEADERS_COMPONENT ${CAMITK_INSTALL_ALL_HEADERS_COMPONENT})
57 
58  # Check group directory
59  if(CAMITK_INSTALL_ALL_HEADERS_GROUP)
60  # Create group directory if not already existing
61  if (NOT EXISTS ${CAMITK_INSTALL_ALL_HEADERS_BUILD_BASE_DIR}/${CAMITK_INSTALL_ALL_HEADERS_GROUP} AND NOT CAMITK_INSTALL_ALL_HEADERS_DIRECTORY)
62  add_custom_command( TARGET ${CAMITK_INSTALL_ALL_HEADERS_TARGET_NAME}
63  POST_BUILD
64  COMMAND ${CMAKE_COMMAND} -E make_directory ${CAMITK_INSTALL_ALL_HEADERS_BUILD_BASE_DIR}/${CAMITK_INSTALL_ALL_HEADERS_GROUP}
65  COMMENT "Creating build-time group include dir ${CAMITK_INSTALL_ALL_HEADERS_BUILD_BASE_DIR}/${CAMITK_INSTALL_ALL_HEADERS_GROUP}"
66  VERBATIM
67  )
68  endif()
69  # Update base dirs
70  set(CAMITK_INSTALL_ALL_HEADERS_BUILD_BASE_DIR ${CAMITK_INSTALL_ALL_HEADERS_BUILD_BASE_DIR}/${CAMITK_INSTALL_ALL_HEADERS_GROUP})
71  set(CAMITK_INSTALL_ALL_HEADERS_INSTALL_RELATIVE_DIR ${CAMITK_INSTALL_ALL_HEADERS_INSTALL_RELATIVE_DIR}/${CAMITK_INSTALL_ALL_HEADERS_GROUP})
72  endif()
73 
74  # Create component directory if not already existing
75  if (NOT EXISTS ${CAMITK_INSTALL_ALL_HEADERS_BUILD_BASE_DIR}/${CAMITK_INSTALL_ALL_HEADERS_COMPONENT} AND NOT CAMITK_INSTALL_ALL_HEADERS_DIRECTORY)
76  add_custom_command( TARGET ${CAMITK_INSTALL_ALL_HEADERS_TARGET_NAME}
77  POST_BUILD
78  COMMAND ${CMAKE_COMMAND} -E make_directory ${CAMITK_INSTALL_ALL_HEADERS_BUILD_BASE_DIR}/${CAMITK_INSTALL_ALL_HEADERS_COMPONENT}
79  COMMENT "Creating build-time include dir ${CAMITK_INSTALL_ALL_HEADERS_BUILD_BASE_DIR}/${CAMITK_INSTALL_ALL_HEADERS_COMPONENT}"
80  VERBATIM
81  )
82  endif()
83  # Update base dirs
84  set(CAMITK_INSTALL_ALL_HEADERS_BUILD_BASE_DIR ${CAMITK_INSTALL_ALL_HEADERS_BUILD_BASE_DIR}/${CAMITK_INSTALL_ALL_HEADERS_COMPONENT})
85  set(CAMITK_INSTALL_ALL_HEADERS_INSTALL_RELATIVE_DIR ${CAMITK_INSTALL_ALL_HEADERS_INSTALL_RELATIVE_DIR}/${CAMITK_INSTALL_ALL_HEADERS_COMPONENT})
86 
87  # Build time installation
88  file(GLOB_RECURSE HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/ *.h)
89  foreach(HEADER ${HEADERS})
90  # Get the subdirectory name of the header
91  string(REGEX MATCH ".*/" SUBDIR ${HEADER})
92 
93  # Create subdirectory if not already existing
94  if(NOT EXISTS ${CAMITK_INSTALL_ALL_HEADERS_BUILD_BASE_DIR}/${SUBDIR} AND NOT CAMITK_INSTALL_ALL_HEADERS_${SUBDIR})
95  # Create directory at build time
96  add_custom_command( TARGET ${CAMITK_INSTALL_ALL_HEADERS_TARGET_NAME}
97  POST_BUILD
98  COMMAND ${CMAKE_COMMAND} -E make_directory ${CAMITK_INSTALL_ALL_HEADERS_BUILD_BASE_DIR}/${SUBDIR}
99  COMMENT "Creating build-time include dir ${CAMITK_INSTALL_ALL_HEADERS_COMPONENT}/${SUBDIR}"
100  VERBATIM
101  )
102  set(CAMITK_INSTALL_ALL_HEADERS_${SUBDIR} "CREATED") # To avoid creating the directory another time
103  endif()
104 
105  # Install header at build time
106  add_custom_command( TARGET ${CAMITK_INSTALL_ALL_HEADERS_TARGET_NAME}
107  POST_BUILD
108  COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/${HEADER} ${CAMITK_INSTALL_ALL_HEADERS_BUILD_BASE_DIR}/${SUBDIR}
109  COMMENT "Installing build-time header ${CAMITK_INSTALL_ALL_HEADERS_COMPONENT}/${HEADER}"
110  VERBATIM
111  )
112  endforeach()
113 
114  # Install time, copy all the .h directories structure
115  install( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
116  COMPONENT ${CAMITK_INSTALL_ALL_HEADERS_TARGET_NAME}
117  DESTINATION ${CAMITK_INSTALL_ALL_HEADERS_INSTALL_RELATIVE_DIR}
118  FILES_MATCHING
119  PATTERN "*.h"
120  )
121 
122 end(){)
123 
parse_arguments()
macro parse_arguments is a fork from CMakeMacroParseArguments see http://www.cmake.org/Wiki/CMakeMacroParseArguments for more information
Definition: ParseArguments.h:13
camitk_install_all_headers()
camitk_install_all_headers is a macro that install all header files of a project at build and install...
Definition: CamiTKInstallAllHeaders.h:42
static void include(QRect &r, const QRect &rect)
Definition: canvas_typed/qtcanvas.cpp:98