From 3a94561c4d05abf9f3bdadb1e68ce812705f9a70 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Wed, 29 Aug 2018 13:18:43 +0200 Subject: [PATCH] Debug Builds: -DPy_DEBUG (#1438) builds against a python debug library were unreliable and could lead to symbol errors during linking. Setting the `Py_DEBUG` define is necessary when linking against a debug build: https://stackoverflow.com/questions/39161202/how-to-work-around-missing-pymodule-create2-in-amd64-win-python35-d-lib https://docs.python.org/2/c-api/intro.html#debugging-builds https://docs.python.org/3.6/c-api/intro.html#debugging-builds --- tools/pybind11Tools.cmake | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tools/pybind11Tools.cmake b/tools/pybind11Tools.cmake index a7c471a07..52a70c23c 100644 --- a/tools/pybind11Tools.cmake +++ b/tools/pybind11Tools.cmake @@ -135,6 +135,13 @@ function(pybind11_add_module target_name) PRIVATE ${pybind11_INCLUDE_DIR} # from pybind11Config PRIVATE ${PYTHON_INCLUDE_DIRS}) + # Python debug libraries expose slightly different objects + # https://docs.python.org/3.6/c-api/intro.html#debugging-builds + # https://stackoverflow.com/questions/39161202/how-to-work-around-missing-pymodule-create2-in-amd64-win-python35-d-lib + if(PYTHON_IS_DEBUG) + target_compile_definitions(${target_name} PRIVATE Py_DEBUG) + endif() + # The prefix and extension are provided by FindPythonLibsNew.cmake set_target_properties(${target_name} PROPERTIES PREFIX "${PYTHON_MODULE_PREFIX}") set_target_properties(${target_name} PROPERTIES SUFFIX "${PYTHON_MODULE_EXTENSION}")