From 0b33eb09297823d26ac5499c8470c6a8361a09b1 Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Fri, 15 Dec 2017 22:21:51 +0300 Subject: [PATCH] cmake: fix ocv_target_compile_definitions() for world builds fixes CUDA build --- cmake/OpenCVModule.cmake | 5 +++++ cmake/OpenCVUtils.cmake | 9 ++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/cmake/OpenCVModule.cmake b/cmake/OpenCVModule.cmake index 17f5b3b7dd..a84bbff453 100644 --- a/cmake/OpenCVModule.cmake +++ b/cmake/OpenCVModule.cmake @@ -863,6 +863,11 @@ macro(_ocv_create_module) ocv_target_link_libraries(${the_module} LINK_PRIVATE ${CUDA_LIBRARIES} ${CUDA_npp_LIBRARY}) endif() + if(OPENCV_MODULE_${the_module}_COMPILE_DEFINITIONS) + target_compile_definitions(${the_module} ${OPENCV_MODULE_${the_module}_COMPILE_DEFINITIONS}) + unset(OPENCV_MODULE_${the_module}_COMPILE_DEFINITIONS CACHE) + endif() + add_dependencies(opencv_modules ${the_module}) if(ENABLE_SOLUTION_FOLDERS) diff --git a/cmake/OpenCVUtils.cmake b/cmake/OpenCVUtils.cmake index e5ca276598..1bb539e957 100644 --- a/cmake/OpenCVUtils.cmake +++ b/cmake/OpenCVUtils.cmake @@ -987,7 +987,14 @@ endfunction() function(ocv_target_compile_definitions target) _ocv_fix_target(target) - target_compile_definitions(${target} ${ARGN}) + if(NOT TARGET ${target}) + if(NOT DEFINED OPENCV_MODULE_${target}_LOCATION) + message(FATAL_ERROR "ocv_target_compile_definitions: invalid target: '${target}'") + endif() + set(OPENCV_MODULE_${target}_COMPILE_DEFINITIONS ${OPENCV_MODULE_${target}_COMPILE_DEFINITIONS} ${ARGN} CACHE INTERNAL "" FORCE) + else() + target_compile_definitions(${target} ${ARGN}) + endif() endfunction()