Am 02.07.2014 01:04, schrieb Rick McGuire:
We like to include the SVN revision number in our build artifacts to help keep track of what version people are working with. I found the following
code on the mailing lists which appears to work fine:

# Get the SVN revision number of an svn command line client is
# available.  This version will run at build time rather than only
# at configuration generation time.
FIND_PROGRAM(SVN_EXECUTABLE svn
  DOC "subversion command line client")

# only do this if we have an svn client.
if (SVN_EXECUTABLE)
    MACRO(Subversion_GET_REVISION dir variable)
      EXECUTE_PROCESS(COMMAND ${SVN_EXECUTABLE} info ${dir}
        OUTPUT_VARIABLE ${variable}
        OUTPUT_STRIP_TRAILING_WHITESPACE)
      STRING(REGEX REPLACE "^(.*\n)?Revision: ([^\n]+).*"
        "\\2" ${variable} "${${variable}}")
    ENDMACRO(Subversion_GET_REVISION)

    Subversion_GET_REVISION(${CMAKE_SOURCE_DIR} ORX_BLD_LVL)
endif ()

message(STATUS "SVN Revision Number is ${ORX_BLD_LVL}")


Unfortunately, the first person not in the core team who building was
running a Spanish language version of SVN, so the ORX_BLD_LEVEL
variable ended up with the entire output of the svn info command
because it could not find the string REVISION.  This was not a good
thing!


Is there a better way to obtain the SVN revision number that does not
suffer from this sort of problem?

cmake --help-module FindSubversion

This gives you an example of exactly this at the end (it also fetches the last commit message). And the macros in FindSubversion will already care for the language issue.

Eike
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake

Reply via email to