3 @brief Output a 
boolean to JSON
 
    5 Appends a condition as a JSON 
boolean with the given dictionary 
key name to the
 
   18   string(APPEND "${output}
" "\
"${name}\": ${val}, ")
 
   24 @brief Output a 
string list to JSON
 
   26 Appends a variable as a JSON list of strings with the given dictionary 
key name 
   27 to the given 
string variable.
 
   35   foreach (
value IN LISTS 
"${var}")
 
   36     string(APPEND list 
"\"${value}\", ")
 
   39   string(REPLACE ", ]" "]" list "${list}
") 
   40   string(APPEND "${output}
" "\
"${name}\": ${list}, ")
 
   46 @ingroup module-support
 
   47 @brief JSON metadata representation of modules
 
   49 Information about the modules built and/or available may be dumped to a JSON
 
   58   * `MODULES`: (Required) The modules to output information 
for.
 
   59   * `OUTPUT`: (Required) A JSON file describing the modules built will
 
   60     be output to 
this path. Relative paths are rooted to `CMAKE_BINARY_DIR`.
 
   69       "library_name": 
"...",
 
   71       "implementable": <
bool>,
 
   72       "third_party": <
bool>,
 
   73       "wrap_exclude": <
bool>,
 
  104   cmake_parse_arguments(_vtk_json
 
  110   if (_vtk_json_UNPARSED_ARGUMENTS)
 
  112       "Unparsed arguments for vtk_module_json: " 
  113       "${_vtk_json_UNPARSED_ARGUMENTS}")
 
  116   if (NOT DEFINED _vtk_json_OUTPUT)
 
  118       "The `OUTPUT` argument is required.")
 
  121   if (NOT _vtk_json_MODULES)
 
  122     message(FATAL_ERROR "No modules given to output.")
 
  125   if (NOT IS_ABSOLUTE "${_vtk_json_OUTPUT}
") 
  126     set(_vtk_json_OUTPUT "${CMAKE_BINARY_DIR}/${_vtk_json_OUTPUT}
") 
  131   set(_vtk_json_contents "{
") 
  132   string(APPEND _vtk_json_contents "\
"modules\": {")
 
  133   foreach (_vtk_json_module IN LISTS _vtk_json_MODULES)
 
  134     get_property(_vtk_json_description GLOBAL
 
  135       PROPERTY 
"_vtk_module_${_vtk_json_module}_description")
 
  136     get_property(_vtk_json_implementable GLOBAL
 
  137       PROPERTY 
"_vtk_module_${_vtk_json_module}_implementable")
 
  138     get_property(_vtk_json_third_party GLOBAL
 
  139       PROPERTY 
"_vtk_module_${_vtk_json_module}_third_party")
 
  140     get_property(_vtk_json_wrap_exclude GLOBAL
 
  141       PROPERTY 
"_vtk_module_${_vtk_json_module}_wrap_exclude")
 
  142     get_property(_vtk_json_kit GLOBAL
 
  143       PROPERTY 
"_vtk_module_${_vtk_json_module}_kit")
 
  144     get_property(_vtk_json_depends GLOBAL
 
  145       PROPERTY 
"_vtk_module_${_vtk_json_module}_depends")
 
  146     get_property(_vtk_json_private_depends GLOBAL
 
  147       PROPERTY 
"_vtk_module_${_vtk_json_module}_private_depends")
 
  148     get_property(_vtk_json_optional_depends GLOBAL
 
  149       PROPERTY 
"_vtk_module_${_vtk_json_module}_optional_depends")
 
  150     get_property(_vtk_json_implements GLOBAL
 
  151       PROPERTY 
"_vtk_module_${_vtk_json_module}_implements")
 
  152     get_property(_vtk_json_library_name GLOBAL
 
  153       PROPERTY 
"_vtk_module_${_vtk_json_module}_library_name")
 
  154     get_property(_vtk_json_module_file GLOBAL
 
  155       PROPERTY 
"_vtk_module_${_vtk_json_module}_file")
 
  157     set(_vtk_json_kit_name 
"null")
 
  159       list(APPEND _vtk_json_kits
 
  161       set(_vtk_json_kit_name 
"\"${_vtk_json_kit}\"")
 
  163     set(_vtk_json_headers "")
 
  164     if (TARGET "${_vtk_json_module}
") 
  165       _vtk_module_get_module_property("${_vtk_json_module}
" 
  167         VARIABLE  _vtk_json_headers) 
  168       get_filename_component(_vtk_json_module_dir "${_vtk_json_module_file}
" DIRECTORY) 
  169       file(RELATIVE_PATH _vtk_json_module_subdir "${CMAKE_SOURCE_DIR}
" "${_vtk_json_module_dir}
") 
  170       string(REPLACE "${CMAKE_SOURCE_DIR}/${_vtk_json_module_subdir}/
" "" _vtk_json_headers "${_vtk_json_headers}
") 
  171       string(REPLACE "${CMAKE_BINARY_DIR}/${_vtk_json_module_subdir}/
" "" _vtk_json_headers "${_vtk_json_headers}
") 
  174     string(APPEND _vtk_json_contents "\
"${_vtk_json_module}\": {")
 
  175     string(APPEND _vtk_json_contents 
"\"library_name\": \"${_vtk_json_library_name}\", ")
 
  176     string(APPEND _vtk_json_contents 
"\"description\": \"${_vtk_json_description}\", ")
 
  177     _vtk_json_bool(_vtk_json_contents 
"enabled" "TARGET;${_vtk_json_module}")
 
  178     _vtk_json_bool(_vtk_json_contents 
"implementable" _vtk_json_implementable)
 
  179     _vtk_json_bool(_vtk_json_contents 
"third_party" _vtk_json_third_party)
 
  180     _vtk_json_bool(_vtk_json_contents 
"wrap_exclude" _vtk_json_wrap_exclude)
 
  181     string(APPEND _vtk_json_contents 
"\"kit\": ${_vtk_json_kit_name}, ")
 
  187     string(APPEND _vtk_json_contents 
"}, ")
 
  189   string(APPEND _vtk_json_contents "}, ")
 
  191   string(APPEND _vtk_json_contents "\"kits\": {
") 
  192   foreach (_vtk_json_kit IN LISTS _vtk_json_kits) 
  193     set(_vtk_json_library_name "null") 
  194     if (TARGET "${_vtk_json_kit}
") 
  195       get_property(_vtk_json_library 
  196         TARGET    "${_vtk_json_kit}
" 
  197         PROPERTY  LIBRARY_OUTPUT_NAME) 
  198       set(_vtk_json_library_name "\
"${_vtk_json_library}\"")
 
  201     string(APPEND _vtk_json_contents "\"${_vtk_json_kit}\
": {")
 
  202     string(APPEND _vtk_json_contents 
"\"library_name\": ${_vtk_json_library_name}, ")
 
  203     _vtk_json_bool(_vtk_json_contents 
"enabled" "TARGET;${_vtk_json_kit}")
 
  204     string(APPEND _vtk_json_contents 
"}, ")
 
  206   string(APPEND _vtk_json_contents "}, ")
 
  208   string(APPEND _vtk_json_contents "}")
 
  209   string(REPLACE ", ]" "]" _vtk_json_contents "${_vtk_json_contents}
") 
  210   string(REPLACE ", }
" "}
" _vtk_json_contents "${_vtk_json_contents}
") 
  212     OUTPUT  "${_vtk_json_OUTPUT}
" 
  213     CONTENT "${_vtk_json_contents}
")