foreach(OPT ${CPU_DISPATCH_FINAL})
if(__result_${OPT})
#message("${OPT}: ${__result_${OPT}}")
- if(CMAKE_GENERATOR MATCHES "^Visual")
+ if(CMAKE_GENERATOR MATCHES "^Visual"
+ OR OPENCV_CMAKE_CPU_OPTIMIZATIONS_FORCE_TARGETS
+ )
+ # MSVS generator is not able to properly order compilation flags:
# extra flags are added before common flags, so switching between optimizations doesn't work correctly
# Also CMAKE_CXX_FLAGS doesn't work (it is directory-based, so add_subdirectory is required)
add_library(${TARGET_BASE_NAME}_${OPT} OBJECT ${__result_${OPT}})
unset(OPENCV_MODULE_${mod}_PRIVATE_OPT_DEPS CACHE)
unset(OPENCV_MODULE_${mod}_LINK_DEPS CACHE)
unset(OPENCV_MODULE_${mod}_WRAPPERS CACHE)
- unset(OPENCV_DEPENDANT_TARGETS_${mod} CACHE)
endforeach()
# clean modules info which needs to be recalculated
endif()
endfunction()
+if(DEFINED OPENCV_DEPENDANT_TARGETS_LIST)
+ foreach(v ${OPENCV_DEPENDANT_TARGETS_LIST})
+ unset(${v} CACHE)
+ endforeach()
+ unset(OPENCV_DEPENDANT_TARGETS_LIST CACHE)
+endif()
+
function(ocv_append_dependant_targets target)
#ocv_debug_message("ocv_append_dependant_targets(${target} ${ARGN})")
_ocv_fix_target(target)
+ list(FIND OPENCV_DEPENDANT_TARGETS_LIST "OPENCV_DEPENDANT_TARGETS_${target}" __id)
+ if(__id EQUAL -1)
+ list(APPEND OPENCV_DEPENDANT_TARGETS_LIST "OPENCV_DEPENDANT_TARGETS_${target}")
+ list(SORT OPENCV_DEPENDANT_TARGETS_LIST)
+ set(OPENCV_DEPENDANT_TARGETS_LIST "${OPENCV_DEPENDANT_TARGETS_LIST}" CACHE INTERNAL "")
+ endif()
set(OPENCV_DEPENDANT_TARGETS_${target} "${OPENCV_DEPENDANT_TARGETS_${target}};${ARGN}" CACHE INTERNAL "" FORCE)
endfunction()