[CMake] Fwd: Re: how to do this: svn info?

m.hergarden m.hergarden at euphoria-it.nl
Fri Jun 29 02:08:06 EDT 2012



Will a string replace combo help in your case? We use it to replace line
endings with ; to make a cmake list variable from a filelist:

STRING(REPLACE "\n" "\\" svn_lastlog_with_slashes ${svn_lastlog})

regards,
Micha

On 06/29/2012 01:56 AM, Totte Karlsson wrote:
> Hi,
>
> I'm trying to get some svn information into a build of a C library.
>
> The cmake currently looks like this (gathered from various posts)
>
> INCLUDE(FindSubversion)
> IF(SUBVERSION_FOUND)
>     Subversion_WC_INFO(${PROJECT_SOURCE_DIR} rr)
>     Subversion_WC_LOG(${PROJECT_SOURCE_DIR} rr)
>
>     SET(infoFile rr_svn_info)
>
>     FILE(WRITE ${infoFile}.txt
> "#ifndef ${infoFile}H
> #define ${infoFile}H
> const int SVN_VERSION =  ${rr_WC_REVISION};\n
> const char* SVN_LAST_COMMIT_AUTHOR =\"${rr_WC_LAST_CHANGED_AUTHOR}\";\n
> const char* SVN_LASTLOG =\"    ${rr_LAST_CHANGED_LOG}\";\n
> #endif"
>     )
>
>     EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy_if_different
> ${infoFile}.txt ${infoFile}.h)
> ENDIF(SUBVERSION_FOUND)
>
>
> Currently I have two problems:
> When generating the header, the svn_lastlog expands to something like
>
> const char* SVN_LASTLOG ="
> ------------------------------------------------------------------------
> r505 | tottek | 2012-06-28 14:11:49 -0700 (Thu, 28 Jun 2012) | 20 lines
>
> New release
> ..... etc..
>
> The above will not compile, because a string spanning multiple lines
> in C must have a continuation character at the end of each line, e.g.
>
> const char* SVN_LASTLOG ="\
> ------------------------------------------------------------------------\
> r505 | tottek | 2012-06-28 14:11:49 -0700 (Thu, 28 Jun 2012) | 20 lines\
> .... etc...
>
> How would one solve that in CMake?
>
> The second problem is the execute process command
>     EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy_if_different
> ${infoFile}.txt ${infoFile}.h)
>
> which do create the txt file, but fails to copy it to the .h file.
> Just getting an error saying
> Error copying file (if different) from "the txt file" to "the h file"
>
> Any tips?
>
> -totte
>







More information about the CMake mailing list