cmake execute process() échoue toujours avec "No such file or directory" quand j'appelle git

sur une machine linux, à partir d'un projet cmake, j'essaye d'appeler git en utilisant execute_process pour que je puisse inclure des informations du contrôle source dans mon application.

j'ai créé un petit test pour essayer d'Imprimer la version 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"
  )

qui donne la sortie suivante lorsque vous exécutez 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: 

Mais si je change la commande ls le résultat est valide et je vois la liste dir imprimer. J'ai également vérifié avec lequel ce git est effectivement en / usr / bin.

avez-vous une idée de ce que je rate?

17
demandé sur Rian Sanderson 2011-07-23 04:19:12

1 réponses

vous devez passer les arguments comme une deuxième option comme ceci:

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}")
44
répondu Unapiedra 2011-07-23 06:59:04