CMake ne fournit aucune commande standard pour récupérer sous forme de texte la date et l’heure courante. Voici deux macros qui permettent de récupérer ces informations sous Unix ou Windows.
Mise à jour - 03/01/2023
Depuis la rédaction de cet article, la commande string(TIMESTAMP) a été introduite dans la version courante de CMake. Il reste en ligne pour les archives, mais ces deux macros ne devraient plus être utilisées.
cmake_minimum_required(VERSION 2.8)
# Return the date (yyyy-mm-dd)
macro(DATE RESULT)
if(WIN32)
execute_process(COMMAND "cmd" " /C date /T" OUTPUT_VARIABLE ${RESULT})
string(REGEX REPLACE "(..)/(..)/(....).*" "\\3-\\2-\\1" ${RESULT} ${${RESULT}})
elseif(UNIX)
execute_process(COMMAND "date" "+%Y-%m-%d" OUTPUT_VARIABLE ${RESULT})
else()
message(SEND_ERROR "Unable to detect date")
set(${RESULT} UNKNOWN)
endif()
endmacro()
# Return the time (hh:mm:ss)
macro(TIME RESULT)
if(WIN32)
execute_process(COMMAND "cmd" " /C echo %TIME%" OUTPUT_VARIABLE ${RESULT})
string(REGEX REPLACE "(..:..:..),(..)" "\\1" ${RESULT} ${${RESULT}})
elseif(UNIX)
execute_process(COMMAND "date" "+%H:%M:%S" OUTPUT_VARIABLE ${RESULT})
else()
message(SEND_ERROR "Unable to detect time")
set(${RESULT} UNKNOWN)
endif()
endmacro()
Crédit photo : Murray Campbell