FindPython3 is broken in CMake 3.16
Some result variables are not set. Instead, variables prefixed by an underscore are exposed. Works until CMake 3.15, broken in CMake 3.16.
Here's a script:
cmake_minimum_required(VERSION 3.16)
# Tested on Ubuntu 16.04 and 18.04 with "apt install python3-dev python3-numpy"
project(FindPython3IsBroken)
find_package(Python3 COMPONENTS Interpreter Development NumPy)
if (Python3_FOUND)
message(STATUS "Python3_EXECUTABLE: ${Python3_EXECUTABLE}")
message(STATUS "_Python3_EXECUTABLE: ${_Python3_EXECUTABLE}\n")
message(STATUS "Python3_INCLUDE_DIR: ${Python3_INCLUDE_DIR}")
message(STATUS "_Python3_INCLUDE_DIR: ${_Python3_INCLUDE_DIR}\n")
message(STATUS "Python3_LIBRARY_DEBUG: ${Python3_LIBRARY_DEBUG}")
message(STATUS "_Python3_LIBRARY_DEBUG: ${_Python3_LIBRARY_DEBUG}\n")
message(STATUS "Python3_LIBRARY_RELEASE: ${Python3_LIBRARY_RELEASE}")
message(STATUS "_Python3_LIBRARY_RELEASE: ${_Python3_LIBRARY_RELEASE}\n")
message(STATUS "Python3_NumPy_INCLUDE_DIR: ${Python3_NumPy_INCLUDE_DIR}")
message(STATUS "_Python3_NumPy_INCLUDE_DIR: ${_Python3_NumPy_INCLUDE_DIR}\n")
endif()
Here's its output:
Python3_EXECUTABLE: /usr/bin/python3.6
_Python3_EXECUTABLE: /usr/bin/python3.6
Python3_INCLUDE_DIR:
_Python3_INCLUDE_DIR: /usr/include/python3.6m
Python3_LIBRARY_DEBUG:
_Python3_LIBRARY_DEBUG:
Python3_LIBRARY_RELEASE: /usr/lib/x86_64-linux-gnu/libpython3.6m.so
_Python3_LIBRARY_RELEASE: /usr/lib/x86_64-linux-gnu/libpython3.6m.so
Python3_NumPy_INCLUDE_DIR:
_Python3_NumPy_INCLUDE_DIR: /usr/lib/python3/dist-packages/numpy/core/include