如何 运行 来自 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})
我有一个 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})