if (PYTHON_DEBUG_LIBRARIES AND BUILD_BOOST_PYTHON) # We have detected that there might be Python debug libraries # available, but check for ourselves whether this is true by trying # to compile/link a program against them. set(CMAKE_REQUIRED_DEFINITIONS "-DBOOST_DEBUG_PYTHON -DPy_DEBUG") get_directory_property(CMAKE_REQUIRED_INCLUDES INCLUDE_DIRECTORIES) set(CMAKE_REQUIRED_LIBRARIES ${PYTHON_DEBUG_LIBRARIES}) set(CHECK_PYDEBUG_SOURCE "#include ") check_cxx_source_compiles( "#include void check(PyObject *obj) { Py_INCREF(obj); } int main() { }" PYDEBUG_CAN_BUILD) # Setup an option to enable/disable building variants with Python # debugging. If we were able to link against the debug libraries, # default to ON; otherwise, default to OFF. option(BUILD_PYTHON_DEBUG "Build an additional Boost.Python library with Python debugging enabled" ${PYDEBUG_CAN_BUILD}) endif (PYTHON_DEBUG_LIBRARIES AND BUILD_BOOST_PYTHON) # Always build the non-debug variants of the boost_python library set(BUILD_PYTHON_NODEBUG ON) boost_add_library(boost_python numeric.cpp list.cpp long.cpp dict.cpp tuple.cpp str.cpp slice.cpp converter/from_python.cpp converter/registry.cpp converter/type_id.cpp object/enum.cpp object/class.cpp object/function.cpp object/inheritance.cpp object/life_support.cpp object/pickle_support.cpp errors.cpp module.cpp converter/builtin_converters.cpp converter/arg_to_python_base.cpp object/iterator.cpp object/stl_iterator.cpp object_protocol.cpp object_operators.cpp wrapper.cpp import.cpp exec.cpp object/function_doc_signature.cpp STATIC_COMPILE_FLAGS "-DBOOST_PYTHON_SOURCE -DBOOST_PYTHON_STATIC_LIB" SHARED_COMPILE_FLAGS "-DBOOST_PYTHON_SOURCE" PYTHON_NODEBUG_LINK_LIBS "${PYTHON_LIBRARIES}" # Support for Python debugging EXTRA_VARIANTS PYTHON_NODEBUG:PYTHON_DEBUG PYTHON_DEBUG_COMPILE_FLAGS "-DBOOST_DEBUG_PYTHON -DPy_DEBUG" PYTHON_DEBUG_LINK_LIBS "${PYTHON_DEBUG_LIBRARIES}" )