CMake для запуска скрипта - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь создать сборку CMake, которая будет запускать несколько скриптов Python перед сборкой программного обеспечения, если вообще будет. В качестве отправной точки я хотел создать проект CMake, который будет запускать только один скрипт на Python. У меня возникли проблемы с выполнением сценария. Вот что я имею в своем проекте.

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 Ответ

1 голос
/ 17 апреля 2019

Пока 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})

Кроме того, вы можете указать RESULT_VARIABLE или OUTPUT_VARIABLE с помощью команды execute_process для установки переменных CMakeна основе кодов возврата или стандартного вывода выполненного процесса;это может помочь повлиять на последующее поведение CMake.

Кроме того, если вы действительно хотите отключить начальную проверку компилятора CMake, вы можете отключить языки, указав NONE в команде project.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...