我有一些项目应该支持 Win32
和 x64
平台。
一些代码是由 python 脚本生成的。
此脚本使用 python3
功能。
在 CMakeLists.txt
我有这样的东西:
find_package(PythonInterp REQUIRED)
if (CMAKE_CL_64)
set(MY_APP_PLATFORM "x64")
else()
set(MY_APP_PLATFORM "Win32")
endif()
add_custom_command(TARGET MyApp
PRE_BUILD
COMMAND ${PYTHON_EXECUTABLE} ${MyApp_ROOT}/generator.py -p ${MY_APP_PLATFORM }
WORKING_DIRECTORY ${PATH_GENERATED_SRC}
COMMENT "Generating code..."
VERBATIM
)
非常简单。
现在,当使用 x64
的项目时,一切都很好,但是当为 Win32
构建时(cmake 必须生成单独的项目)cmake
找到 python 2.7.2
。
以这种方式更改 CMakeLists.txt
:
find_package(PythonInterp 3.7 REQUIRED)
导致cmake失败。
有没有办法修复它,还是我必须更正 pythons 脚本以使其与 python2
兼容?
或者我是否必须为 32 位和 64 位安装 python3
以涵盖这两个平台?
最佳答案
CMake 模块是您的 cmake 发行版中的 FindPython3.cmake
。
这应该有效:
find_package(Python3 COMPONENTS Interpreter)
add_custom_command(TARGET MyApp
PRE_BUILD
COMMAND ${PYTHON3_EXECUTABLE} ${MyApp_ROOT}/generator.py -p ${MY_APP_PLATFORM}
WORKING_DIRECTORY ${PATH_GENERATED_SRC}
COMMENT "Generating code..."
VERBATIM
)
它从 cmake 3.12
开始可用。
关于python - 用于 Win32 平台的 CMake find_package(需要 PythonInterp 3.7),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55046499/