opencv/interfaces/swig/python/CMakeLists.txt

119 lines
3.8 KiB
CMake

# ----------------------------------------------------------------------------
# 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()