Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将SVN版本信息添加到源代码(CMAKE)_Svn_Cmake_Versioning - Fatal编程技术网

将SVN版本信息添加到源代码(CMAKE)

将SVN版本信息添加到源代码(CMAKE),svn,cmake,versioning,Svn,Cmake,Versioning,我的CMake文件中有此代码,用于获取SVN版本信息,并将其推送到我的项目可以使用的定义中: find_package(Subversion) if(SUBVERSION_FOUND) Subversion_WC_INFO(${CMAKE_CURRENT_SOURCE_DIR} MyProj) target_compile_definitions(MyProj PUBLIC "-DSVN_RC=${MyProj_WC_REVISION}" ) endif(S

我的CMake文件中有此代码,用于获取SVN版本信息,并将其推送到我的项目可以使用的定义中:

   find_package(Subversion)
   if(SUBVERSION_FOUND)
     Subversion_WC_INFO(${CMAKE_CURRENT_SOURCE_DIR} MyProj)
     target_compile_definitions(MyProj PUBLIC "-DSVN_RC=${MyProj_WC_REVISION}" )
   endif(SUBVERSION_FOUND)
这将使用默认CMake分发中的宏。这实际上就是宏所做的:

  macro(Subversion_WC_INFO dir prefix)

    execute_process(COMMAND ${Subversion_SVN_EXECUTABLE} info ${dir}
      OUTPUT_VARIABLE ${prefix}_WC_INFO
      ERROR_VARIABLE Subversion_svn_info_error
      RESULT_VARIABLE Subversion_svn_info_result
      OUTPUT_STRIP_TRAILING_WHITESPACE)

    if(NOT ${Subversion_svn_info_result} EQUAL 0)
      message(SEND_ERROR "Command \"${Subversion_SVN_EXECUTABLE} info ${dir}\" failed with output:\n${Subversion_svn_info_error}")
    endif()

  endmacro()
我的问题是这个代码失败了。我的配置的输出如下所示:

CMake Error at C:/msys64/mingw32/share/cmake-3.8/Modules/FindSubversion.cmake:99 (message):
  Command "C:/msys64/usr/bin/svn.exe info
  C:/msys64/home/stew/proj"
  failed with output:

  svn: warning: W155010: The node '/home/stew/proj/build/C:/msys64/home/stew/proj/' was not found.

  svn: E200009: Could not display info for all targets because some targets don't exist

我认为问题在于我的msys环境,它是一种伪根环境。svn info/home/stew/proj工作,而svn info c:/msys64/home/stew/proj不工作${CMAKE_CURRENT_SOURCE_DIR}为我提供了windows路径,这是svn的一个问题。有没有办法将Windows格式的`${CMAKE\u CURRENT\u SOURCE\u DIR}输出转换为fakeroot格式?如果没有,有没有办法强迫SVN接受另一条路径?

我也遇到了同样的问题。我的解决办法是:

execute_process(COMMAND ${CMAKE_COMMAND} -E chdir ${CMAKE_CURRENT_SOURCE_DIR} svnversion -n OUTPUT_VARIABLE SVN_COMMIT)

${CMAKE_COMMAND}-E chdir${CMAKE_CURRENT_SOURCE_DIR}位运行${CMAKE_CURRENT_SOURCE_DIR}中的命令。

确保正确设置了路径。通过QtCreator运行find_packageSubversion失败,因此我必须手动设置路径。