0
作爲我們構建過程的一部分,我們將構建的二進制文件安裝到某個位置。cmake:if(file1 IS_NEWER_THAN file2)是否損壞?
我有一個自定義cmake腳本,檢查構建的二進制時間戳,如果它比已安裝的二進制文件更新,請將其複製。
這裏是從腳本摘錄:
if(SRC_FILE IS_NEWER_THAN DEST_FILE)
message(STATUS "installing ${DEST_FILE}")
execute_process(
COMMAND
${CMAKE_COMMAND} -E make_directory ${INSTALL_DIR}
COMMAND
${CMAKE_COMMAND} -E copy ${SRC_FILE} ${DEST_FILE}
# copy preserves timestamps, so touch to make the installed file newer
COMMAND
${CMAKE_COMMAND} -E touch ${DEST_FILE}
)
endif()
出於某種原因,我不斷獲取true
從IS_NEWER_THAN
回來了,所以我加了一些調試語句打印出兩個文件的時間戳:
file(TIMESTAMP ${DEST_FILE} DEST_TIMESTAMP)
file(TIMESTAMP ${SRC_FILE} SRC_TIMESTAMP)
message("DST_FILE: ${DEST_TIMESTAMP} ${DEST_FILE}")
message("SRC_FILE: ${SRC_TIMESTAMP} ${SRC_FILE}")
if(SRC_FILE IS_NEWER_THAN DEST_FILE)
message("SRC is newer than DEST")
endif()
下面是一些示例輸出:
DST_FILE: 2016-11-17T15:08:28 /home/steve/src/install/app SRC_FILE: 2016-11-17T14:56:35 /home/steve/src/.build/app/app.bin SRC is newer than DEST
這清楚地說,SRC_FILE
在14:56:35
創建,DEST_FILE
在15:08:28
創建。
IS_NEWER_THAN
怎麼回來true
爲SRC_FILE
?