message: cmake: eliminate ninja generator warning (CMake 3.10), refactor code
diff: @@ -38,15 +38,12 @@ ocv_list_filterout(opencv_hdrs "modules/.*_inl\\\\.h*")
  ocv_list_filterout(opencv_hdrs "modules/.*\\\\.details\\\\.h*")
  ocv_list_filterout(opencv_hdrs "modules/.*/detection_based_tracker\\\\.hpp") # Conditional compilation
  -set(cv2_generated_hdrs
  +set(cv2_generated_files
  "${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_include.h"
  "${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_funcs.h"
  "${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_types.h"
  "${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_type_reg.h"
  "${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_ns_reg.h"
  -)
  -
  -set(cv2_generated_files ${cv2_generated_hdrs}
  "${OPENCV_PYTHON_SIGNATURES_FILE}"
  )
  @@ -54,18 +51,29 @@ string(REPLACE ";" "\n" opencv_hdrs_ "${opencv_hdrs}")
  file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/headers.txt" "${opencv_hdrs_}")
  add_custom_command(
  OUTPUT ${cv2_generated_files}
  - COMMAND ${PYTHON_DEFAULT_EXECUTABLE} "${PYTHON_SOURCE_DIR}/src2/gen2.py" ${CMAKE_CURRENT_BINARY_DIR} "${CMAKE_CURRENT_BINARY_DIR}/headers.txt"
  - DEPENDS ${PYTHON_SOURCE_DIR}/src2/gen2.py
  - DEPENDS ${PYTHON_SOURCE_DIR}/src2/hdr_parser.py
  - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/headers.txt
  - DEPENDS ${opencv_hdrs}
  + COMMAND "${PYTHON_DEFAULT_EXECUTABLE}" "${PYTHON_SOURCE_DIR}/src2/gen2.py" "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/headers.txt"
  + DEPENDS "${PYTHON_SOURCE_DIR}/src2/gen2.py"
  + "${PYTHON_SOURCE_DIR}/src2/hdr_parser.py"
  + # not a real build dependency (file(WRITE) result): ${CMAKE_CURRENT_BINARY_DIR}/headers.txt
  + ${opencv_hdrs}
  COMMENT "Generate files for Python bindings and documentation"
  )
  add_custom_target(gen_opencv_python_source DEPENDS ${cv2_generated_files})
  set(cv2_custom_hdr "${CMAKE_CURRENT_BINARY_DIR}/pyopencv_custom_headers.h")
  -file(WRITE ${cv2_custom_hdr} "//user-defined headers\n")
  +set(cv2_custom_hdr_str "//user-defined headers\n")
  foreach(uh ${opencv_userdef_hdrs})
  - file(APPEND ${cv2_custom_hdr} "#include \"${uh}\"\n")
  + set(cv2_custom_hdr_str "${cv2_custom_hdr_str}#include \"${uh}\"\n")
  endforeach(uh)
  +if(EXISTS "${cv2_custom_hdr}")
  + file(READ "${cv2_custom_hdr}" __content)
  +else()
  + set(__content "")
  +endif()
  +if("${__content}" STREQUAL "${cv2_custom_hdr_str}")
  + # Up-to-date
  +else()
  + file(WRITE "${cv2_custom_hdr}" "${cv2_custom_hdr_str}")
  +endif()
  +unset(__content)
  