[CMake] Getting the svn revision number of our source.
Rick McGuire
object.rexx at gmail.com
Tue Jul 1 19:04:45 EDT 2014
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?
Rick
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20140701/9eace26e/attachment-0001.html>
More information about the CMake
mailing list