当我调用git时,cmake execute_process()总是以"没有这样的文件或目录"失败

Ria*_*son 25 cmake

在Linux机器上,从cmake项目,我正在尝试使用execute_process调用git,以便我可以将源控件中的信息包含到我的应用程序中.

我创建了一个小测试来尝试打印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"
  )
Run Code Online (Sandbox Code Playgroud)

运行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: 
Run Code Online (Sandbox Code Playgroud)

但是,如果我将命令更改为ls结果有效,我会看到dir列表打印.我还检查了哪个git确实在/ usr/bin中.

我在这里缺少什么想法?

Una*_*dra 54

您必须将参数作为第二个选项传递,如下所示:

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}")
Run Code Online (Sandbox Code Playgroud)

  • 很好......你应该得到这个奖励. (3认同)