[CMake] Fwd: Cmake macro and date

Eric Noulard eric.noulard at gmail.com
Thu Feb 12 11:37:15 EST 2009


Fwd to the list


---------- Forwarded message ----------
From: Benoit RAT (Gmail) <benoit.rat at gmail.com>
Date: 2009/2/12
Subject: Re: [CMake] Cmake macro and date
To: Eric Noulard <eric.noulard at gmail.com>


Okay it seems to be perl problem therefore I've decided to make the
script directly calling system function:

Here you have an exemple using REGEXP extension:

MACRO (TODAY RESULT)
    IF (WIN32)
        EXECUTE_PROCESS(COMMAND "date" "/T" OUTPUT_VARIABLE ${RESULT})
        string(REGEX REPLACE "(..)/(..)/..(..).*" "\\3\\2\\1"
${RESULT} ${${RESULT}})
    ELSEIF(UNIX)
        EXECUTE_PROCESS(COMMAND "date" "+%d/%m/%Y" OUTPUT_VARIABLE ${RESULT})
        string(REGEX REPLACE "(..)/(..)/..(..).*" "\\3\\2\\1"
${RESULT} ${${RESULT}})
    ELSE (WIN32)
        MESSAGE(SEND_ERROR "date not implemented")
        SET(${RESULT} 000000)
    ENDIF (WIN32)
ENDMACRO (TODAY)

Hope it can be usefull to someone!

--
Benoit RAT
www.neub.co.nr


On Thu, Feb 12, 2009 at 2:59 PM, Eric Noulard <eric.noulard at gmail.com> wrote:
>
> 2009/2/12 Benoit <benpaka.spam at gmail.com>:
> > Hy,
> >
> > I want to retrieve today date in order to install various release each day.
> > I've created a script: GetDataTime.cmake
> >
> > In which I have defined this macro:
> >
> > INCLUDE(FindPerl)
> > MACRO (TODAY RESULT)
> > IF (PERL_FOUND)
> >     EXECUTE_PROCESS(COMMAND "${PERL_EXECUTABLE}" "-E
> > '($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
> > printf \"%02d%02d%02d\",$year-100,$mon+1,$mday;'" OUTPUT_VARIABLE ${RESULT})
>
> [...]
>
> > Someone can tell me how to use a macro to retrieve a result because I'm not
> > sure to understand!!!!
>
> I think your example should work since this one is working fine:
>
> MACRO (TODAY RESULT)
>    EXECUTE_PROCESS(COMMAND echo "MacroSetted" OUTPUT_VARIABLE ${RESULT})
>    MESSAGE( STATUS "(in) ${RESULT}")
> ENDMACRO (TODAY)
>
> TODAY(FF)
> MESSAGE(STATUS "FF = ${FF}")
>
> I think perl execution is behaving strangely when executed from within
> execute_process.
> I would bet that when executed interactively in a termibnal it works as expected
> but does not behave the same way regarding standard output when launch in exec.
>
> --
> Erk




-- 
Erk


More information about the CMake mailing list