1- cmake_minimum_required (VERSION 3.12 )
1+ cmake_minimum_required (VERSION 3.20 )
22
33project (rcutils)
44
@@ -16,6 +16,21 @@ include(CheckLibraryExists)
1616find_package (ament_cmake_python REQUIRED )
1717find_package (ament_cmake_ros REQUIRED )
1818
19+ # By default, without the settings below, find_package(Python3) will attempt
20+ # to find the newest python version it can, and additionally will find the
21+ # most specific version. For instance, on a system that has
22+ # /usr/bin/python3.10, /usr/bin/python3.11, and /usr/bin/python3, it will find
23+ # /usr/bin/python3.11, even if /usr/bin/python3 points to /usr/bin/python3.10.
24+ # The behavior we want is to prefer the "system" installed version unless the
25+ # user specifically tells us othewise through the Python3_EXECUTABLE hint.
26+ # Setting CMP0094 to NEW means that the search will stop after the first
27+ # python version is found. Setting Python3_FIND_UNVERSIONED_NAMES means that
28+ # the search will prefer /usr/bin/python3 over /usr/bin/python3.11. And that
29+ # latter functionality is only available in CMake 3.20 or later, so we need
30+ # at least that version.
31+ cmake_policy (SET CMP0094 NEW )
32+ set (Python3_FIND_UNVERSIONED_NAMES FIRST)
33+
1934find_package (Python3 REQUIRED COMPONENTS Interpreter )
2035
2136ament_python_install_package (${PROJECT_NAME} )
0 commit comments