CMake target_link_libraries for boost-python 找不到 .lib 但变量 ${PYTHON_LIBRARIES} 指向它

CMake target_link_libraries for boost-python does not find the .lib but the variable ${PYTHON_LIBRARIES} points to it

我正在使用一个简单的 CMake (3.17.3) 项目来检查我在 windows 10 机器上通过 vcpkg (2020.02.04-nohash) 安装的 boost-python (1.73) 使用VSCode (1.46.0)。 CMake 文件是

cmake_minimum_required(VERSION 3.5)

find_package(PythonLibs 3.8 REQUIRED)
find_package(Boost COMPONENTS python38 REQUIRED)
set(CMAKE_SHARED_MODULE_PREFIX "")
add_library(hello_ext MODULE hello_ext.cpp)

target_link_libraries(hello_ext ${Boost_LIBRARIES} ${PYTHON_LIBRARIES})
target_include_directories(hello_ext PRIVATE ${Boost_LIBRARIES} ${PYTHON_INCLUDE_DIRS})

构建时出现的错误是LINK : fatal error LNK1104: cannot open file 'python38.lib' [E:\Code\python_starter\build\hello_ext.vcxproj]

${PYTHON_LIBRARIES} 变量是 optimizedE:/SD/Programming/C++/vcpkg/installed/x64-windows/lib/python38.libdebugE:/SD/Programming/C++/vcpkg/installed/x64-windows/debug/lib/python38_d.lib,手动检查确认 python38.lib 是该变量假定的位置。

我被难住了。 target_link_libraries(hello_ext ${Boost_LIBRARIES} ${PYTHON_LIBRARIES}) 似乎没有找到 python38.lib 但它在变量 ${PYTHON_LIBRARIES}

我觉得我遗漏了一些非常明显的东西。我是 cmake 的新手,请放轻松!

*** 编辑:如果我 'hard code' link 到 python.lib,项目构建即

#target_link_libraries(hello_ext ${Boost_LIBRARIES} ${PYTHON_LIBRARIES})
target_link_libraries(hello_ext E:/SD/Programming/C++/vcpkg/installed/x64-windows/lib/python38.lib ${Boost_LIBRARIES})

构建良好。

我想我有解决办法。根据 FindPythonLibs find_package(PythonLibs 3.8 REQUIRED) 查找相关 python 环境变量的方法已弃用,需要替换为 find_package(Python COMPONENTS Interpreter Development) 这样,target_include_directories 宏中的大小写从 ${PYTHON_LIBRARIES} 变为 ${Python_LIBRARIES}