Как заставить cmake создать файл метки времени после фактической сборки / ссылки? (ничего не делать, если исполняемый файл не изменился)

Я хотел бы призватьdate +"%s" > ${TIMESTAMP} для каждого из трех исполняемых файлов,myapp_datamyapp_live а такжеmyapp_sim что я генерирую (т.е. создаю временную метку, только если созданы соответствующие исполняемые файлы).

Я могу'Кажется, я не понимаю, почему моя пользовательская команда невыполняется даже после удаления двоичных файлов и повторной связи. Сборка работает нормально - не генерируется только метка временит работа.

MACRO( MY_APP TAG )
  SET( BINARY_TGT "myapp_${TAG}" )
  SET( TIMESTAMP  "TIMESTAMP_${TAG}" )
  ADD_EXECUTABLE( ${BINARY_TGT} ${APP_SRCS} )

  ADD_CUSTOM_COMMAND(
    OUTPUT  ${TIMESTAMP}
    COMMAND date 
    ARGS    +\"%s\" > ${TIMESTAMP}
    DEPENDS ${BINARY_TGT}
  )
ENDMACRO( MY_APP )

SUBDIRS( data )
SUBDIRS( live )
SUBDIRS( sim  )

Внутри каталога данных у меня есть:

FILE(GLOB APP_SRCS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} main_data.cpp)
SET( MY_TAG data )
MY_APP( "${MY_TAG}" )

Ответы на вопрос(1)

Ваш ответ на вопрос