From 41a4a3213598fb6e1dbc16dbe6b94cc74566de5b Mon Sep 17 00:00:00 2001 From: Marc Chevrier Date: Fri, 16 May 2025 18:42:28 +0200 Subject: [PATCH] FindPython: Avoid implicit link library on Windows Starting with version 3.14, on Windows, by specifying macro Py_NO_LINK_LIB, the python library is no longer implicitly specified at the link step. Fixes: #26756 --- Modules/FindPython/Support.cmake | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Modules/FindPython/Support.cmake b/Modules/FindPython/Support.cmake index 9b89307b30..299765068e 100644 --- a/Modules/FindPython/Support.cmake +++ b/Modules/FindPython/Support.cmake @@ -4069,7 +4069,11 @@ if(_${_PYTHON_PREFIX}_CMAKE_ROLE STREQUAL "PROJECT") set_property (TARGET ${__name} PROPERTY INTERFACE_COMPILE_DEFINITIONS "${${_PYTHON_PREFIX}_DEFINITIONS}") endif() - + if(WIN32) + # avoid implicit library link (recognized by version 3.14 and upper) + set_property (TARGET ${__name} + APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS "Py_NO_LINK_LIB") + endif() if (${_PYTHON_PREFIX}_${_PREFIX}LIBRARY_RELEASE AND ${_PYTHON_PREFIX}_RUNTIME_${_PREFIX}LIBRARY_RELEASE) # System manage shared libraries in two parts: import and runtime @@ -4131,6 +4135,11 @@ if(_${_PYTHON_PREFIX}_CMAKE_ROLE STREQUAL "PROJECT") set_property (TARGET ${__name} PROPERTY INTERFACE_COMPILE_DEFINITIONS "${${_PYTHON_PREFIX}_DEFINITIONS}") endif() + if(WIN32) + # avoid implicit library link (recognized by version 3.14 and upper) + set_property (TARGET ${__name} + APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS "Py_NO_LINK_LIB") + endif() # When available, enforce shared library generation with undefined symbols if (APPLE)