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()