python - CMake 运行脚本

标签 python cmake

我正在尝试创建一个 CMake 构建,该构建将在构建软件之前运行多个 python 脚本(如果有的话)。作为起点,我想创建一个仅运行单个 python 脚本的 CMake 项目。我在执行脚本时遇到问题。这是我的项目中的内容。

测试.py

open('script_output.txt', 'a').close()

CMakeLists.txt

cmake_minimum_required (VERSION 2.6)
project (module)

add_custom_command(OUTPUT script_output.c
           COMMAND python test.py)

add_custom_target(release ALL DEPENDS script_output.c)

它似乎尝试运行 Visual Studio 编译器,但我不想要它,并且不运行我确实想要的 python 脚本 script_output.py。我在这里做错了什么?

最佳答案

虽然 add_custom_command 将在代码编译期间(CMake 完成后)运行,但 execute_process 将在 CMake 配置阶段运行。

CMakeLists.txt

cmake_minimum_required(VERSION 3.0)

# Skip compiler check by enabling no languages.
project(TestProj NONE)

# Tell CMake to run python from the directory where this CMakeLists file exists.
execute_process(COMMAND python test.py
    WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR})

# If you have more than one script to run, use a 
# separate execute_process command, to ensure sequential execution.
execute_process(COMMAND python test2.py
    WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR})

此外,您还可以使用 execute_process 指定 RESULT_VARIABLEOUTPUT_VARIABLE根据执行进程的返回码或标准输出设置 CMake 变量的命令;这可能有助于影响后续的 CMake 行为。

此外,如果您确实想要禁用 CMake 的初始编译器检查,可以通过在 project 命令中指定 NONE 来禁用这些语言。

关于python - CMake 运行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55700953/

相关文章:

objective-c - 将 Xcode MacOS 游戏模板移植到 СMake 时出现问题

xcode - 带有 XCode 目标的 CMake,生成忽略发布配置的调试符号设置

python - 如何使用python从容器中下载所有blob,其中blob是子目录样式

python - SWIG 中的类型检查和重载方法

python - 根据其他列值在 Pandas 中添加新列

c++ - 将图标添加到工具栏中的 QAction

c++ - 在 cmake 中添加库列表

python - 文件更改不会立即反射(reflect)

python - 无法修改屏蔽数组中的数据。 arr[i] 与 arr.data[i]

c++ - 在打开 cuda 后端的情况下配置 OpenCV cmake 构建时出现错误 "CUDA backend requires cuDNN"