## capture the specified variables in the specified obj
function(obj_capture map)
   set(__obj_capture_args ${ARGN})
    list_extract_flag(__obj_capture_args --notnull)
    ans(__not_null)
    foreach(__obj_capture_arg ${ARGN})
      if("${__obj_capture_arg}" MATCHES "(.+)[:=](.+)")
        set(__obj_capture_arg_key ${CMAKE_MATCH_1})
        set(__obj_capture_arg ${CMAKE_MATCH_2})
      else()
        set(__obj_capture_arg_key "${__obj_capture_arg}")
      endif()
     # print_vars(__obj_capture_arg __obj_capture_arg_key)
      if(NOT __not_null OR NOT "${${__obj_capture_arg}}_" STREQUAL "_")
        obj_set(${map} "${__obj_capture_arg_key}" "${${__obj_capture_arg}}")
      endif()
    endforeach()

endfunction()
