mirror of https://github.com/opencv/opencv.git
Open Source Computer Vision Library
https://opencv.org/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
118 lines
3.8 KiB
118 lines
3.8 KiB
# ---------------------------------------------------------------------------- |
|
# CMake file for python support |
|
# ---------------------------------------------------------------------------- |
|
project(python_support) |
|
|
|
find_package(SWIG REQUIRED) |
|
include(${SWIG_USE_FILE}) |
|
|
|
include_directories(${PYTHON_INCLUDE_PATH}) |
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}) |
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../filtered) |
|
|
|
if(MSVC) |
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3") |
|
endif() |
|
|
|
# ----------------------------------- cv module ------------------------------ |
|
|
|
set_source_files_properties(cv.i PROPERTIES |
|
CPLUSPLUS ON |
|
SWIG_FLAGS -includeall |
|
SWIG_FLAGS -DSKIP_INCLUDES |
|
) |
|
|
|
set(opencv_headers |
|
${CMAKE_SOURCE_DIR}/include/opencv/cxtypes.h |
|
${CMAKE_SOURCE_DIR}/include/opencv/cxcore.h |
|
${CMAKE_SOURCE_DIR}/include/opencv/cvtypes.h |
|
${CMAKE_SOURCE_DIR}/include/opencv/cv.h |
|
) |
|
|
|
add_custom_command( |
|
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/cvaliases_autogen.i |
|
COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/utils/extract_aliases.py |
|
${opencv_headers} > ${CMAKE_CURRENT_BINARY_DIR}/cvaliases_autogen.i |
|
DEPENDS ${opencv_headers} |
|
) |
|
|
|
set(SWIG_MODULE_cv_EXTRA_DEPS |
|
imagedata.i cvarr.i ${CMAKE_CURRENT_BINARY_DIR}/cvaliases_autogen.i cvaliases.i pyhelpers.i |
|
nointpb.i pytypemaps.i cvshadow.i cvseq.i |
|
../general/cv.i ../general/memory.i ../general/typemaps.i |
|
../general/extensions.i ../general/doublepointers.i |
|
../general/sizeof.i ../general/cvmacros.i |
|
) |
|
|
|
SWIG_ADD_MODULE(cv python cv.i cvshadow.cpp error.cpp error.h pyhelpers.cpp pyhelpers.h cvshadow.h pycvseq.hpp) |
|
SWIG_LINK_LIBRARIES(cv ${PYTHON_LIBRARIES} cxcore cv) |
|
|
|
# ----------------------------------- ml module ------------------------------ |
|
|
|
set_source_files_properties(ml.i PROPERTIES |
|
CPLUSPLUS ON |
|
SWIG_FLAGS -includeall |
|
SWIG_FLAGS -DSKIP_INCLUDES |
|
) |
|
|
|
set(SWIG_MODULE_ml_EXTRA_DEPS |
|
nointpb.i pytypemaps.i |
|
../general/memory.i ../general/typemaps.i |
|
${CMAKE_SOURCE_DIR}/include/opencv/ml.h |
|
) |
|
|
|
SWIG_ADD_MODULE(ml python ml.i pyhelpers.cpp pyhelpers.h) |
|
SWIG_LINK_LIBRARIES(ml ${PYTHON_LIBRARIES} cxcore ml) |
|
|
|
# --------------------------------highgui module ------------------------------ |
|
|
|
set_source_files_properties(highgui.i PROPERTIES |
|
CPLUSPLUS ON |
|
SWIG_FLAGS -includeall |
|
SWIG_FLAGS -DSKIP_INCLUDES |
|
) |
|
|
|
set(SWIG_MODULE_highgui_EXTRA_DEPS |
|
nointpb.i pytypemaps.i |
|
../general/highgui.i |
|
../general/memory.i ../general/typemaps.i |
|
${CMAKE_SOURCE_DIR}/include/opencv/highgui.h |
|
) |
|
|
|
SWIG_ADD_MODULE(highgui python highgui.i pyhelpers.cpp pyhelpers.h) |
|
SWIG_LINK_LIBRARIES(highgui ${PYTHON_LIBRARIES} cxcore cv highgui) |
|
|
|
# ------------------------------ installation ---------------------------------- |
|
|
|
if(WIN32) |
|
set_target_properties( |
|
${SWIG_MODULE_cv_REAL_NAME} |
|
${SWIG_MODULE_ml_REAL_NAME} |
|
${SWIG_MODULE_highgui_REAL_NAME} |
|
PROPERTIES SUFFIX ".pyd") |
|
endif() |
|
|
|
get_target_property(LOC_CV ${SWIG_MODULE_cv_REAL_NAME} LOCATION) |
|
get_target_property(LOC_ML ${SWIG_MODULE_ml_REAL_NAME} LOCATION) |
|
get_target_property(LOC_HIGHGUI ${SWIG_MODULE_highgui_REAL_NAME} LOCATION) |
|
|
|
set(pyopencv_files __init__.py adaptors.py matlab_syntax.py |
|
${CMAKE_CURRENT_BINARY_DIR}/cv.py |
|
${CMAKE_CURRENT_BINARY_DIR}/ml.py |
|
${CMAKE_CURRENT_BINARY_DIR}/highgui.py) |
|
|
|
foreach(m ${LOC_CV} ${LOC_ML} ${LOC_HIGHGUI}) |
|
string(REPLACE "\$(OutDir)" "\${CMAKE_INSTALL_CONFIG_NAME}" m1 ${m}) |
|
set(pyopencv_files ${pyopencv_files} ${m1}) |
|
endforeach() |
|
|
|
|
|
# TODO: need to compile *.py files |
|
if(WIN32) |
|
install(FILES ${pyopencv_files} DESTINATION |
|
"Python${PYTHON_VERSION_MAJOR_MINOR}/Lib/site-packages/opencv" |
|
COMPONENT main) |
|
else() |
|
install(FILES ${pyopencv_files} DESTINATION ${PYTHON_PLUGIN_INSTALL_PATH} COMPONENT main) |
|
endif() |
|
|
|
|