CMake运行脚本

时间:2019-04-16 05:12:05

标签: python cmake

我正在尝试创建一个CMake构建,该构建将在构建软件之前运行多个python脚本(如果有的话)。首先,我想创建一个仅运行单个python脚本的CMake项目。我无法执行脚本。这是我项目中的内容。

test.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。我在这里做什么错了?

1 个答案:

答案 0 :(得分:0)

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的初始编译器检查,则可以通过在NONE命令中指定project来禁用语言。