mirror of
https://github.com/opencv/opencv.git
synced 2025-01-18 14:13:15 +08:00
Don't explicitly link Python on OS X
Explicitly linking to a Python framework on OS X prevents modules from being built against one python (i.e. system python) and imported from another (i.e. Homebrew python); the interpreter segfaults if there's a linkage to a foreign python. Building the module with `-undefined dynamic_lookup` instead of an explicit link allows the symbols to be resolved at load time from a compatible python.
This commit is contained in:
parent
c9bb18b9f7
commit
d057828ee3
@ -63,9 +63,13 @@ add_custom_command(
|
|||||||
add_library(${the_module} SHARED src2/cv2.cpp ${CMAKE_CURRENT_BINARY_DIR}/generated0.i ${cv2_generated_hdrs} src2/cv2.cv.hpp)
|
add_library(${the_module} SHARED src2/cv2.cpp ${CMAKE_CURRENT_BINARY_DIR}/generated0.i ${cv2_generated_hdrs} src2/cv2.cv.hpp)
|
||||||
if(PYTHON_DEBUG_LIBRARIES AND NOT PYTHON_LIBRARIES MATCHES "optimized.*debug")
|
if(PYTHON_DEBUG_LIBRARIES AND NOT PYTHON_LIBRARIES MATCHES "optimized.*debug")
|
||||||
target_link_libraries(${the_module} debug ${PYTHON_DEBUG_LIBRARIES} optimized ${PYTHON_LIBRARIES})
|
target_link_libraries(${the_module} debug ${PYTHON_DEBUG_LIBRARIES} optimized ${PYTHON_LIBRARIES})
|
||||||
|
else()
|
||||||
|
if(APPLE)
|
||||||
|
set_target_properties(${the_module} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
|
||||||
else()
|
else()
|
||||||
target_link_libraries(${the_module} ${PYTHON_LIBRARIES})
|
target_link_libraries(${the_module} ${PYTHON_LIBRARIES})
|
||||||
endif()
|
endif()
|
||||||
|
endif()
|
||||||
target_link_libraries(${the_module} ${OPENCV_MODULE_${the_module}_DEPS})
|
target_link_libraries(${the_module} ${OPENCV_MODULE_${the_module}_DEPS})
|
||||||
|
|
||||||
execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('SO')"
|
execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('SO')"
|
||||||
|
Loading…
Reference in New Issue
Block a user