diff --git a/cmake/OpenCVPCHSupport.cmake b/cmake/OpenCVPCHSupport.cmake index 59bc826ed0565f713d4801a7171c110ef7245264..059079340117c1469f0e431057a0ebe9bccbeb5d 100644 --- a/cmake/OpenCVPCHSupport.cmake +++ b/cmake/OpenCVPCHSupport.cmake @@ -43,18 +43,9 @@ MACRO(_PCH_GET_COMPILE_FLAGS _out_compile_flags) LIST(APPEND ${_out_compile_flags} "-fPIC") ENDIF() - GET_PROPERTY(_definitions DIRECTORY PROPERTY COMPILE_DEFINITIONS) - if(_definitions) - foreach(_def ${_definitions}) - LIST(APPEND ${_out_compile_flags} "\"-D${_def}\"") - endforeach() - endif() - GET_TARGET_PROPERTY(_target_definitions ${_PCH_current_target} COMPILE_DEFINITIONS) - if(_target_definitions) - foreach(_def ${_target_definitions}) - LIST(APPEND ${_out_compile_flags} "\"-D${_def}\"") - endforeach() - endif() + # Processed via $<TARGET_PROPERTY:target,COMPILE_DEFINITIONS> + #GET_PROPERTY(_definitions DIRECTORY PROPERTY COMPILE_DEFINITIONS) + #GET_TARGET_PROPERTY(_target_definitions ${_PCH_current_target} COMPILE_DEFINITIONS) GET_TARGET_PROPERTY(_cxx_standard ${_PCH_current_target} CXX_STANDARD) if (_cxx_standard) @@ -304,12 +295,22 @@ MACRO(ADD_PRECOMPILED_HEADER _targetName _input) #message("_command ${_input} ${_output}") _PCH_GET_COMPILE_COMMAND(_command ${CMAKE_CURRENT_BINARY_DIR}/${_name} ${_output} ) + set(_pch_generate_file_cmd "${CMAKE_CURRENT_BINARY_DIR}/${_name}.command.sh") + string(REPLACE " " "\\ " _command "${_command}") + string(REPLACE ";" " " _command "${_command}") + file(GENERATE OUTPUT "${_pch_generate_file_cmd}" CONTENT "#!/bin/sh +if [ -n \"$VERBOSE\" ]; then + tail -n1 \$0 +fi +${_command} -D$<JOIN:$<TARGET_PROPERTY:${_targetName},COMPILE_DEFINITIONS>, -D> +") GET_FILENAME_COMPONENT(_outdir ${_output} PATH) ADD_CUSTOM_COMMAND( OUTPUT "${_output}" COMMAND ${CMAKE_COMMAND} -E make_directory "${_outdir}" - COMMAND ${_command} - DEPENDS "${_input}" + COMMAND chmod +x "${_pch_generate_file_cmd}" + COMMAND "${_pch_generate_file_cmd}" + DEPENDS "${_input}" "${_pch_generate_file_cmd}" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${_name}" DEPENDS ${_targetName}_pch_dephelp )