CMake:如果我们进行出口,如何进行颠覆修改但不会失败?

时间:2013-07-03 14:49:32

标签: svn cmake

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

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)

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

1 个答案:

答案 0 :(得分: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)