commit | 3a94561c4d05abf9f3bdadb1e68ce812705f9a70 | [log] [tgz] |
---|---|---|
author | Axel Huebl <axel.huebl@plasma.ninja> | Wed Aug 29 13:18:43 2018 +0200 |
committer | Wenzel Jakob <wenzel.jakob@epfl.ch> | Wed Aug 29 13:18:43 2018 +0200 |
tree | bde82239f54a2db7782a508b42d880a3b2800034 | |
parent | e0f3a766e951ebbf2aadb31f41eb490de5bb607e [diff] [blame] |
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
diff --git a/tools/pybind11Tools.cmake b/tools/pybind11Tools.cmake index a7c471a..52a70c2 100644 --- a/tools/pybind11Tools.cmake +++ b/tools/pybind11Tools.cmake
@@ -135,6 +135,13 @@ 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}")