36 cmake_parse_arguments(PARSE_ARGV 0 _vtk_object_factory_declare
41 if (_vtk_object_factory_declare_UNPARSED_ARGUMENTS)
43 "Unparsed arguments for vtk_object_factory_declare: "
44 "${_vtk_object_factory_declare_UNPARSED_ARGUMENTS}")
47 if (NOT DEFINED _vtk_object_factory_declare_BASE)
49 "The `BASE` argument is required.")
52 if (NOT DEFINED _vtk_object_factory_declare_OVERRIDE)
54 "The `OVERRIDE` argument is required.")
57 set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}
" APPEND
59 _vtk_object_factory_overrides "${_vtk_object_factory_declare_OVERRIDE}
")
60 set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}
" APPEND
62 "_vtk_object_factory_override_${_vtk_object_factory_declare_OVERRIDE}
" "${_vtk_object_factory_declare_BASE}
")
91function (vtk_object_factory_configure)
92 if (NOT DEFINED _vtk_build_module)
97 cmake_parse_arguments(PARSE_ARGV 0 _vtk_object_factory_configure
99 "SOURCE_FILE;HEADER_FILE;INITIAL_CODE;EXPORT_MACRO
"
102 if (_vtk_object_factory_configure_UNPARSED_ARGUMENTS)
105 "${_vtk_object_factory_configure_UNPARSED_ARGUMENTS}
")
108 get_property(_vtk_object_factory_done
110 PROPERTY "_vtk_object_factory_${_vtk_build_module}
"
112 if (_vtk_object_factory_done)
114 "An
object factory has already been created
for ${_vtk_build_module}.
")
118 "_vtk_object_factory_${_vtk_build_module}
" 1)
121 get_property(_vtk_object_factory_overrides
123 PROPERTY _vtk_object_factory_overrides)
125 if (NOT _vtk_object_factory_overrides)
127 "The ${_vtk_build_module} is generating an
object factory, but does not have any declared overrides.
")
130 set(_vtk_object_factory_doc
131 "Override
for ${_vtk_build_module}
module")
133 set(_vtk_object_factory_includes "")
134 set(_vtk_object_factory_functions "")
135 set(_vtk_object_factory_calls "")
137 foreach (_vtk_object_factory_extra_include IN LISTS _vtk_object_factory_configure_EXTRA_INCLUDES)
138 string(APPEND _vtk_object_factory_includes
139 "#include ${_vtk_object_factory_extra_include}\n")
142 foreach (_vtk_object_factory_override IN LISTS _vtk_object_factory_overrides)
143 get_property(_vtk_object_factory_base
145 PROPERTY "_vtk_object_factory_override_${_vtk_object_factory_override}")
146 string(APPEND _vtk_object_factory_includes
147 "#include \"${_vtk_object_factory_override}.h\"\n")
148 string(APPEND _vtk_object_factory_functions
149 "VTK_CREATE_CREATE_FUNCTION(${_vtk_object_factory_override})\n")
150 string(APPEND _vtk_object_factory_calls
151 "this->RegisterOverride(\"${_vtk_object_factory_base}\", \"${_vtk_object_factory_override}\", \"${_vtk_object_factory_doc}\", 1, vtkObjectFactoryCreate${_vtk_object_factory_override});\n
")
154 get_property(_vtk_object_factory_library_name GLOBAL
155 PROPERTY "_vtk_module_${_vtk_build_module}_library_name
")
157 set(_vtk_object_factory_overrides_header
158 "${CMAKE_CURRENT_BINARY_DIR}/${_vtk_object_factory_library_name}ObjectFactory.h
")
159 set(_vtk_object_factory_overrides_source
160 "${CMAKE_CURRENT_BINARY_DIR}/${_vtk_object_factory_library_name}ObjectFactory.cxx
")
164 "${_vtk_object_factory_overrides_header}
"
168 "${_vtk_object_factory_overrides_source}
"
171 if (_vtk_object_factory_configure_HEADER_FILE)
172 set("${_vtk_object_factory_configure_HEADER_FILE}
"
173 "${_vtk_object_factory_overrides_header}
"
177 set("${_vtk_object_factory_configure_SOURCE_FILE}
"
178 "${_vtk_object_factory_overrides_source}
"