fix: respect PYTHON_VERSION if set in classic mode (#2414)
* fix: respect PYTHON_VERSION if set in classic mode
* fix: add warning when using PYTHON_VERSION
diff --git a/tools/pybind11Tools.cmake b/tools/pybind11Tools.cmake
index 809cc58..10f15a3 100644
--- a/tools/pybind11Tools.cmake
+++ b/tools/pybind11Tools.cmake
@@ -12,10 +12,20 @@
set(_pybind11_quiet QUIET)
endif()
-# Add a CMake parameter for choosing a desired Python version
-if(NOT PYBIND11_PYTHON_VERSION)
+# If this is the first run, PYTHON_VERSION can stand in for PYBIND11_PYTHON_VERSION
+if(NOT DEFINED PYBIND11_PYTHON_VERSION AND DEFINED PYTHON_VERSION)
+ message(WARNING "Set PYBIND11_PYTHON_VERSION to search for a specific version, not "
+ "PYTHON_VERSION (which is an output). Assuming that is what you "
+ "meant to do and continuing anyway.")
set(PYBIND11_PYTHON_VERSION
- ""
+ "${PYTHON_VERSION}"
+ CACHE STRING "Python version to use for compiling modules")
+ unset(PYTHON_VERSION)
+ unset(PYTHON_VERSION CACHE)
+else()
+ # If this is set as a normal variable, promote it, otherwise, make an empty cache variable.
+ set(PYBIND11_PYTHON_VERSION
+ "${PYBIND11_PYTHON_VERSION}"
CACHE STRING "Python version to use for compiling modules")
endif()