From dd9c433f17bbeab7415ad8e7c5c75d24c88ea025 Mon Sep 17 00:00:00 2001 From: lethosor Date: Mon, 13 May 2019 19:38:24 -0400 Subject: [PATCH] Use BYPRODUCTS to keep ninja builds from re-running codegen every time This partially reverts f02466de8a783be0c5c06f42485a42f5266693aa, but behavior should be the same under MSVC, which that commit attempted to fix. From https://cmake.org/cmake/help/v3.14/command/add_custom_command.html: > The `BYPRODUCTS` option is ignored on non-Ninja generators except to mark > byproducts `GENERATED`. Since `$GENERATED_HDRS` are already marked generated, this change should have no effect on non-Ninja generators. --- library/CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index a9255ae00..d64b7429f 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -264,10 +264,14 @@ FILE(GLOB GENERATE_INPUT_SCRIPTS ${dfapi_SOURCE_DIR}/xml/*.pm ${dfapi_SOURCE_DIR FILE(GLOB GENERATE_INPUT_XMLS ${dfapi_SOURCE_DIR}/xml/df.*.xml) set(CODEGEN_OUT ${dfapi_SOURCE_DIR}/include/df/codegen.out.xml) -LIST(APPEND CODEGEN_OUT ${GENERATED_HDRS}) +IF(NOT("${CMAKE_GENERATOR}" STREQUAL Ninja)) + # use BYPRODUCTS instead under Ninja to avoid rebuilds + LIST(APPEND CODEGEN_OUT ${GENERATED_HDRS}) +ENDIF() ADD_CUSTOM_COMMAND( OUTPUT ${CODEGEN_OUT} + BYPRODUCTS ${GENERATED_HDRS} COMMAND ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/xml/codegen.pl ${CMAKE_CURRENT_SOURCE_DIR}/xml ${CMAKE_CURRENT_SOURCE_DIR}/include/df