From 5d56b3190e9c1f5dc8d9a433c5743d3a10515b28 Mon Sep 17 00:00:00 2001 From: Damon Kohler Date: Wed, 21 Dec 2016 12:05:15 +0100 Subject: [PATCH] Rerun CMake when files are added/removed. (#170) --- cmake/functions.cmake | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/cmake/functions.cmake b/cmake/functions.cmake index 7f54de6..9e8c4b0 100644 --- a/cmake/functions.cmake +++ b/cmake/functions.cmake @@ -106,6 +106,18 @@ macro(google_initialize_cartographer_project) message(STATUS "Build type: ${CMAKE_BUILD_TYPE}") + # Add a hook that reruns CMake when source files are added or removed. + set(LIST_FILES_CMD "find ${CMAKE_SOURCE_DIR}/ -not -iwholename '*.git*' | sort | sed 's/^/#/'") + set(FILES_LIST_PATH "${CMAKE_BINARY_DIR}/AllFiles.cmake") + set(DETECT_CHANGES_CMD "bash" "-c" "${LIST_FILES_CMD} | diff -N -q ${FILES_LIST_PATH} - || ${LIST_FILES_CMD} > ${FILES_LIST_PATH}") + add_custom_target(cartographer_detect_changes ALL + COMMAND ${DETECT_CHANGES_CMD} + VERBATIM + ) + if(NOT EXISTS ${FILES_LIST_PATH}) + execute_process(COMMAND ${DETECT_CHANGES_CMD}) + endif() + include(${FILES_LIST_PATH}) endmacro() macro(google_enable_testing)