python - Windows 上的 Cmake 与 python 出现问题

标签 python c++ windows cmake python-3.4

我尝试在 Windows 上使用 cmake 构建 C++ 项目。但我发现一个错误:

CMake Error at C:/Program Files (x86)/CMake/share/cmake-3.3/Modules/FindPackageH
andleStandardArgs.cmake:148 (message):
  Could NOT find PythonLibs (missing: PYTHON_LIBRARIES) (found suitable
  version "3.4.1", minimum required is "3.4")
Call Stack (most recent call first):
  C:/Program Files (x86)/CMake/share/cmake-3.3/Modules/FindPackageHandleStandard
Args.cmake:388 (_FPHSA_FAILURE_MESSAGE)
  C:/Program Files (x86)/CMake/share/cmake-3.3/Modules/FindPythonLibs.cmake:205
(FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  CMakeLists.txt:8 (find_package)

即,cmake 找不到 PYTHON_LIBRARIES 目标。但我的电脑上安装了Python 3.4.1。我的操作系统是 Windows 7 prefessional x64。如果我在 Linux 上构建这个项目,它工作得很好。

问题出在哪里?如何帮助 cmake 找到 PYTHON_LIBRARIES

这是我的 CMakeLists 文件:

cmake_minimum_required(VERSION 3.2)
set(CMAKE_VERBOSE_MAKEFILES on)
project(Proj)
set(SOURCE_FILES repeating_count.cpp)

set(CMAKE_VERBOSE_MAKEFILE on)
set(Python_ADDITIONAL_VERSIONS 3.4.1)
find_package(PythonLibs 3.4 REQUIRED)
include_directories(${PYTHON_INCLUDE_DIRS})
python_add_module(repeating_count repeating_count.cpp)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
add_executable(Proj ${SOURCE_FILES})
target_link_libraries(Proj ${PYTHON_LIBRARIES})

最佳答案

我解决了我的问题。我的默认 Cmake 生成器是 Visual Studio 12 2013。

因此,如果我将其更改为 Visual Studio 12 2013 Win64(例如使用 Cmake GUI),它会找到 PYTHON_LIBRARIES 目标并正常工作。

关于python - Windows 上的 Cmake 与 python 出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32550539/

相关文章:

python - 即使安装了 wget,也无法将其识别为命令

python - 构建 Sphinx 文档时未定义 DJANGO_SETTINGS_MODULE

c++ - LoadString 仅在我没有英文字符串表时才有效

c++ - 在 C++ (Portaudio) 中捕获全局音频输出

windows - DOS/Windows 批处理文件 (.BAT) 中 SET 后的 REG 命令为 "unknown"

python - tensorflow /keras : "logits and labels must have the same first dimension" How to squeeze logits or expand labels?

python - Pandas 优化两列上的日期时间比较

c++ - 如何优雅地使用智能指针在 C++ 中为复杂的生命周期建模?

c++ - SFML 形状无限旋转

windows - 为什么 Unicode Windows 标题栏(仅)是问号(?)代码点?