Мне не известно о какой-либо поддержке передачи аргументов в пользовательскую цель CMake, как вы описали. В вашем случае аргументы нужно будет передавать через make
, но CMake также должен поддерживать передачу их через Visual Studio, Ninja и другие генераторы.
Таким образом, одним из способов увидеть эту работу было бы жесткое кодирование аргументов на этапе настройки CMake. Вы можете настроить CMake и передать аргументы, с которыми вы собираетесь запускать пользовательскую цель:
cmake -DARG1=arg1 -DARG2=arg2 ..
Это будет инкапсулировать аргументы в ARG1
и ARG2
переменных CMake, так что ваша пользовательская цель может выглядеть примерно так:
add_custom_target(run_my_script
COMMAND ${CMAKE_BINARY_DIR}/path_to_venv/bin/activate
&& python3 ${CMAKE_CURRENT_LIST_DIR}/run_smth.py ${ARG1} ${ARG2}
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
)
Предполагается, что ваш скрипт run_smth.py
находится в том же каталоге, что и файл CMake, содержащий эту команду, благодаря использованию CMAKE_CURRENT_LIST_DIR
, Аналогично, этот каталог используется в качестве рабочего каталога для запуска сценария python.
Если установка аргументов сценария на этапе настройки CMake слишком ограничительна, вы также можете создать несколько пользовательских целей CMake (например, некоторые для различные тестовые шаблоны, такие как run_my_script_sanity
и run_my_script_regression
):
# Create a custom target for the sanity tests.
add_custom_target(run_my_script_sanity
COMMAND ${CMAKE_BINARY_DIR}/path_to_venv/bin/activate
&& python3 ${CMAKE_CURRENT_LIST_DIR}/run_smth.py -sanity ${ARG2}
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
)
# Create a custom target for the regression tests.
add_custom_target(run_my_script_regression
COMMAND ${CMAKE_BINARY_DIR}/path_to_venv/bin/activate
&& python3 ${CMAKE_CURRENT_LIST_DIR}/run_smth.py -regression ${ARG2}
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
)