diff --git a/cmake/OpenCVInstallLayout.cmake b/cmake/OpenCVInstallLayout.cmake index 25aede72c5..2f3c4d9a48 100644 --- a/cmake/OpenCVInstallLayout.cmake +++ b/cmake/OpenCVInstallLayout.cmake @@ -96,7 +96,11 @@ else() # UNIX endif() -ocv_update(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${OPENCV_LIB_INSTALL_PATH}") +if(APPLE_FRAMEWORK AND BUILD_SHARED_LIBS) + ocv_update(CMAKE_INSTALL_RPATH "@executable_path/Frameworks;@loader_path/Frameworks;@executable_path/../${OPENCV_3P_LIB_INSTALL_PATH}") +else() + ocv_update(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${OPENCV_LIB_INSTALL_PATH}") +endif() set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) if(INSTALL_TO_MANGLED_PATHS) diff --git a/cmake/platforms/OpenCV-Darwin.cmake b/cmake/platforms/OpenCV-Darwin.cmake index 1bb8bf6d7f..5f6c32ac4d 100644 --- a/cmake/platforms/OpenCV-Darwin.cmake +++ b/cmake/platforms/OpenCV-Darwin.cmake @@ -1 +1,8 @@ -# empty +# Additional flags for dynamic framework (macOS) +if(APPLE_FRAMEWORK AND BUILD_SHARED_LIBS) + string(APPEND CMAKE_MODULE_LINKER_FLAGS " -rpath @executable_path/Frameworks -rpath @loader_path/Frameworks") + string(APPEND CMAKE_SHARED_LINKER_FLAGS " -rpath @executable_path/Frameworks -rpath @loader_path/Frameworks") + string(APPEND CMAKE_EXE_LINKER_FLAGS " -rpath @executable_path/Frameworks -rpath @loader_path/Frameworks") + set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG 1) + set(CMAKE_INSTALL_NAME_DIR "@rpath") +endif()