适用于Win32平台的CMake find_package(需要PythonInterp 3.7)

时间:2019-03-07 14:44:08

标签: python c++ cmake

我有一些项目应该支持Win32x64平台。 一些代码是由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。 / p>

以这种方式更改CMakeLists.txt

find_package(PythonInterp 3.7 REQUIRED)

导致cmake失败的原因。

是否可以解决该问题,还是必须将python脚本更正为python2兼容?

还是我必须安装32位和64位python3才能覆盖这两个平台?

1 个答案:

答案 0 :(得分:2)

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起可用。

Documentation