Чтобы сделать определение вашей сборки более надежным, вы можете сначала попытаться найти исполняемый файл python с помощью find_program () .Это остановит сборку с подробным указанием, если python не может быть найден (Вы можете изменить это поведение, передав required: false
в качестве аргумента).
Затем, чтобы убедиться в отсутствии проблем с путями, если ваши аргументы являются файлами или каталогами, убедитесь, что обернули их с помощью files () .
Всего:
python_exe = find_program('python3', 'python')
params = files('file1', 'dir/file2')
r = run_command(python_exe, params, 'arg1', 'arg2')
if r.returncode() != 0
error('Error message')
endif
Вы также можете рассмотреть возможность генерации кода с помощью python с фактическими целями здания, например, generator () или custom_target () .Таким образом, вы можете использовать цель генерации кода в качестве зависимости для фактической цели компиляции c ++, поэтому гарантируется, что код будет сгенерирован первым, а только потом скомпилирован.