如何 运行 来自 CMakeLists.txt 的 python 脚本

How to run a python script from CMakeLists.txt

我有一个 DDS 项目,它获取 IDL 文件并使用“ProcessIDL.py”脚本从中生成 C++ 页眉和页脚文件。以前这是在 Visual Studio 中作为预构建步骤完成的。 我正在将项目转换为 CMake 以与其他存储库保持一致,因此认为 运行 ProcessIDL.py 作为 cmake 构建步骤的一部分是有意义的。

我试过使用 execute_process 但它似乎没有做任何事情,没有错误,python 脚本没有输出所以我不认为它是 运行 完全没有。 这是我的尝试:

include(FindPythonInterp)
set (py_cmd "python ProcessIDL.py")
message(STATUS ${PYTHON_EXECUTABLE})

execute_process(
                  COMMAND ${py_cmd}
                  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/DdsIdl
                  ERROR_VARIABLE error
                  OUTPUT_VARIABLE output
               )

我也试过这个:

include(FindPythonInterp)
set (py_cmd "python ProcessIDL.py")
message(STATUS ${PYTHON_EXECUTABLE})

execute_process(
                  COMMAND ${PYTHON_EXECUTABLE} ${py_cmd}
                  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/DdsIdl
                  ERROR_VARIABLE error
                  OUTPUT_VARIABLE output
               )

“错误”和“输出”变量为空。

我很困惑,所以任何提示将不胜感激!!

这已通过更改工作目录解决:

execute_process(COMMAND python ProcessIDL.py 
    WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR})