Cmake execute_process() всегда терпит неудачу с "Нет такого файла или каталога", когда я вызываю git
На машине linux, из проекта cmake, я пытаюсь вызвать git с помощью execute_process, чтобы я мог включать информацию из исходного элемента управления в свое приложение.
Я создал небольшой тест, чтобы попробовать и распечатать версию git:
cmake_minimum_required (VERSION 2.8)
set (git_cmd "/usr/bin/git --version")
#set (git_cmd "ls") # returns success if you uncomment this line
message(STATUS "git cmd: ${git_cmd}")
execute_process(COMMAND ${git_cmd}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
RESULT_VARIABLE git_result
OUTPUT_VARIABLE git_ver)
message(STATUS "git ver[${git_result}]: ${git_ver}")
configure_file (
"${PROJECT_SOURCE_DIR}/versionInfo.h.in"
"${PROJECT_BINARY_DIR}/versionInfo.h"
)
Что дает следующий вывод при запуске make:
-- git cmd: /usr/bin/git --version
-- git ver[No such file or directory]:
-- Configuring done
-- Generating done
-- Build files have been written to: /home/rsanderson/build/githash:
Но если я изменю команду на ls
, результат будет действителен, и я увижу распечатку каталога. Я также проверил, с какими git действительно находится в /usr/bin.
Любые идеи о том, что мне здесь не хватает?
Ответы
Ответ 1
Вам нужно передать аргументы как второй вариант, например:
cmake_minimum_required (VERSION 2.8)
set (git_cmd "git")
set (git_arg "--version")
message(STATUS "git cmd: ${git_cmd}")
execute_process(COMMAND ${git_cmd} ${git_arg}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
RESULT_VARIABLE git_result
OUTPUT_VARIABLE git_ver)
message(STATUS "git ver[${git_result}]: ${git_ver}")