Skip to content
Snippets Groups Projects
Commit f9272079 authored by Andrews Sobral's avatar Andrews Sobral
Browse files

Fix for Python support on Windows

parent c5c700d1
No related branches found
No related tags found
No related merge requests found
...@@ -23,8 +23,13 @@ set(CMAKE_BUILD_TYPE Release) ...@@ -23,8 +23,13 @@ set(CMAKE_BUILD_TYPE Release)
#set(CMAKE_BUILD_TYPE Debug) #set(CMAKE_BUILD_TYPE Debug)
if(WIN32) if(WIN32)
if(BGS_PYTHON_SUPPORT)
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MD")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd")
else()
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
endif()
endif(WIN32) endif(WIN32)
set(bgs_out_dir ".") set(bgs_out_dir ".")
...@@ -68,11 +73,13 @@ if(${OpenCV_VERSION} VERSION_LESS 2.3.1) ...@@ -68,11 +73,13 @@ if(${OpenCV_VERSION} VERSION_LESS 2.3.1)
endif() endif()
if(BGS_PYTHON_SUPPORT) if(BGS_PYTHON_SUPPORT)
set(Boost_USE_STATIC_LIBS OFF) #set(Boost_USE_STATIC_LIBS OFF)
set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_MULTITHREADED ON) set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME OFF) set(Boost_USE_STATIC_RUNTIME OFF)
find_package(Boost REQUIRED COMPONENTS python) find_package(Boost REQUIRED COMPONENTS python)
find_package(PythonInterp REQUIRED)
find_package(PythonLibs REQUIRED) find_package(PythonLibs REQUIRED)
message(STATUS "Boost library status:") message(STATUS "Boost library status:")
...@@ -81,9 +88,20 @@ if(BGS_PYTHON_SUPPORT) ...@@ -81,9 +88,20 @@ if(BGS_PYTHON_SUPPORT)
message(STATUS " include path: ${Boost_INCLUDE_DIRS}") message(STATUS " include path: ${Boost_INCLUDE_DIRS}")
message(STATUS "Python library status:") message(STATUS "Python library status:")
message(STATUS " version: ${PYTHON_VERSION}") message(STATUS " executable: ${PYTHON_EXECUTABLE}")
message(STATUS " libraries: ${PYTHON_LIBRARIES}") message(STATUS " version: ${PYTHON_VERSION_STRING}")
#message(STATUS " libraries: ${PYTHON_LIBRARIES}")
message(STATUS " library: ${PYTHON_LIBRARY}")
message(STATUS " include path: ${PYTHON_INCLUDE_DIRS}") message(STATUS " include path: ${PYTHON_INCLUDE_DIRS}")
if(NOT NUMPY_INCLUDE_DIR)
# message(FATAL_ERROR "You must define NUMPY_INCLUDE_DIR by 'cmake -D NUMPY_INCLUDE_DIR=/python/lib/site-packages/numpy/core/include ..'")
exec_program ("${PYTHON_EXECUTABLE}"
ARGS "-c \"import numpy; print numpy.get_include()\""
OUTPUT_VARIABLE NUMPY_INCLUDE_DIR
RETURN_VALUE NUMPY_NOT_FOUND)
endif()
message(STATUS "NUMPY_INCLUDE_DIR: ${NUMPY_INCLUDE_DIR}")
endif() endif()
#file(GLOB sources FrameProcessor.cpp PreProcessor.cpp VideoAnalysis.cpp VideoCapture.cpp) #file(GLOB sources FrameProcessor.cpp PreProcessor.cpp VideoAnalysis.cpp VideoCapture.cpp)
...@@ -97,7 +115,7 @@ file(GLOB_RECURSE analysis_src package_analysis/*.cpp) ...@@ -97,7 +115,7 @@ file(GLOB_RECURSE analysis_src package_analysis/*.cpp)
if(BGS_PYTHON_SUPPORT) if(BGS_PYTHON_SUPPORT)
file(GLOB_RECURSE bgs_src package_bgs/*.cpp package_bgs/*.c wrapper_python/*.cpp) file(GLOB_RECURSE bgs_src package_bgs/*.cpp package_bgs/*.c wrapper_python/*.cpp)
file(GLOB_RECURSE bgs_include package_bgs/*.h wrapper_python/*.h) file(GLOB_RECURSE bgs_include package_bgs/*.h wrapper_python/*.h)
include_directories(${CMAKE_SOURCE_DIR} ${OpenCV_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} ${PYTHON_INCLUDE_DIRS}) include_directories(${CMAKE_SOURCE_DIR} ${OpenCV_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} ${PYTHON_INCLUDE_DIRS} ${NUMPY_INCLUDE_DIR})
else() else()
file(GLOB_RECURSE bgs_src package_bgs/*.cpp package_bgs/*.c) file(GLOB_RECURSE bgs_src package_bgs/*.cpp package_bgs/*.c)
file(GLOB_RECURSE bgs_include package_bgs/*.h) file(GLOB_RECURSE bgs_include package_bgs/*.h)
...@@ -113,7 +131,7 @@ endif() ...@@ -113,7 +131,7 @@ endif()
if(BGS_PYTHON_SUPPORT) if(BGS_PYTHON_SUPPORT)
#add_library(libbgs SHARED ${sources} ${bgs_src} ${analysis_src}) #add_library(libbgs SHARED ${sources} ${bgs_src} ${analysis_src})
add_library(libbgs SHARED ${bgs_src} ${analysis_src}) add_library(libbgs SHARED ${bgs_src} ${analysis_src})
target_link_libraries(libbgs ${OpenCV_LIBS} ${Boost_LIBRARIES} ${PYTHON_LIBRARIES}) target_link_libraries(libbgs ${OpenCV_LIBS} ${Boost_LIBRARIES} ${PYTHON_LIBRARY})
target_compile_definitions(libbgs PRIVATE BGS_PYTHON_SUPPORT=1) target_compile_definitions(libbgs PRIVATE BGS_PYTHON_SUPPORT=1)
else() else()
#add_library(libbgs STATIC ${sources} ${bgs_src} ${analysis_src}) #add_library(libbgs STATIC ${sources} ${bgs_src} ${analysis_src})
...@@ -121,12 +139,17 @@ else() ...@@ -121,12 +139,17 @@ else()
target_link_libraries(libbgs ${OpenCV_LIBS}) target_link_libraries(libbgs ${OpenCV_LIBS})
endif() endif()
set_property(TARGET libbgs PROPERTY PUBLIC_HEADER ${bgs_include}) set_property(TARGET libbgs PROPERTY PUBLIC_HEADER ${bgs_include})
if(WIN32) if(WIN32)
# set_property(TARGET libbgs PROPERTY SUFFIX ".lib") # set_property(TARGET libbgs PROPERTY SUFFIX ".lib")
if(BGS_PYTHON_SUPPORT)
set_property(TARGET libbgs PROPERTY SUFFIX ".pyd")
endif()
else() else()
set_property(TARGET libbgs PROPERTY OUTPUT_NAME "bgs") set_property(TARGET libbgs PROPERTY OUTPUT_NAME "bgs")
endif() endif()
if(NOT BGS_PYTHON_SUPPORT)
add_executable(bgslibrary ${main}) add_executable(bgslibrary ${main})
target_link_libraries(bgslibrary ${OpenCV_LIBS} libbgs) target_link_libraries(bgslibrary ${OpenCV_LIBS} libbgs)
# set_target_properties(bgslibrary PROPERTIES OUTPUT_NAME bgs) # set_target_properties(bgslibrary PROPERTIES OUTPUT_NAME bgs)
...@@ -145,3 +168,4 @@ install(TARGETS libbgs ...@@ -145,3 +168,4 @@ install(TARGETS libbgs
PUBLIC_HEADER DESTINATION include/package_bgs COMPONENT dev PUBLIC_HEADER DESTINATION include/package_bgs COMPONENT dev
FRAMEWORK DESTINATION "/Library/Frameworks" FRAMEWORK DESTINATION "/Library/Frameworks"
) )
endif()
\ No newline at end of file
...@@ -14,6 +14,7 @@ GNU General Public License for more details. ...@@ -14,6 +14,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with BGSLibrary. If not, see <http://www.gnu.org/licenses/>. along with BGSLibrary. If not, see <http://www.gnu.org/licenses/>.
*/ */
#define BOOST_PYTHON_STATIC_LIB
#include <boost/python.hpp> #include <boost/python.hpp>
#include <boost/python/suite/indexing/vector_indexing_suite.hpp> #include <boost/python/suite/indexing/vector_indexing_suite.hpp>
#include <exception> #include <exception>
......
...@@ -16,6 +16,7 @@ along with BGSLibrary. If not, see <http://www.gnu.org/licenses/>. ...@@ -16,6 +16,7 @@ along with BGSLibrary. If not, see <http://www.gnu.org/licenses/>.
*/ */
#pragma once #pragma once
#define BOOST_PYTHON_STATIC_LIB
#include <boost/python.hpp> #include <boost/python.hpp>
#include <boost/python/suite/indexing/vector_indexing_suite.hpp> #include <boost/python/suite/indexing/vector_indexing_suite.hpp>
......
...@@ -21,7 +21,6 @@ along with BGSLibrary. If not, see <http://www.gnu.org/licenses/>. ...@@ -21,7 +21,6 @@ along with BGSLibrary. If not, see <http://www.gnu.org/licenses/>.
#include <Python.h> #include <Python.h>
#include <opencv2/opencv.hpp> #include <opencv2/opencv.hpp>
#include <opencv2/core.hpp>
#include <numpy/ndarrayobject.h> #include <numpy/ndarrayobject.h>
static PyObject* opencv_error = 0; static PyObject* opencv_error = 0;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment