1

我以这种方式检索颠覆修订:

include(FindSubversion)
IF(Subversion_FOUND) 
    Subversion_WC_INFO(${CMAKE_SOURCE_DIR} MY)
    SET(SVN_REVISION "${MY_WC_REVISION}")
ELSE(Subversion_FOUND)
    SET(SVN_REVISION "-1")
ENDIF(Subversion_FOUND) 

问题是当有人执行“svn export”时,他无法编译:

-- Found Subversion: /usr/bin/svn (found version "1.6.11") 
CMake Error at /opt/cmake-2.8.9-Linux-i386/share/cmake-2.8/Modules/FindSubversion.cmake:84 (MESSAGE):
  Command "/usr/bin/svn info /tmp/amore" failed with output:

  svn: '/tmp/amore' is not a working copy

Call Stack (most recent call first):
  CMakeLists.txt:32 (Subversion_WC_INFO)

如何以优雅的方式解决这个问题?

4

1 回答 1

3

我决定简单地测试源中目录 .svn 的存在:

# SVN revision 
include(FindSubversion)
IF(Subversion_FOUND) 
    if(EXISTS "${CMAKE_SOURCE_DIR}/.svn")
        Subversion_WC_INFO(${CMAKE_SOURCE_DIR} MY)
        SET(SVN_REVISION "${MY_WC_REVISION}")
    else ()
        SET(SVN_REVISION "-1")
    endif()
ELSE(Subversion_FOUND)
    SET(SVN_REVISION "-1")
ENDIF(Subversion_FOUND) 
于 2013-07-03T14:59:36.253 回答