Hello
I have a big closed-source project, that uses CMake as a main build system.
After upgrading from CMake 3.26 to CMake 3.27 I see, that my custom generators are always rebuild.
I just run 5 sequential builds and all of the time my custom generators were executed again.
When I add next lines, all was fixed & works as before.
if(POLICY CMP0147)
# This CMake 3.27 policy breaks incremental builds for IDL files
cmake_policy(SET CMP0147 OLD)
endif()
My code for custom files generation:
add_custom_command(
OUTPUT ${generatedSources}
COMMAND_EXPAND_LISTS
COMMAND
# Shell launcher, that passes another args next
"${idlScriptPath}"
# Command to call IDL compiler
"${IDL_COMPILER}"
"${additionalFlags}"
MAIN_DEPENDENCY "${filePath}"
DEPENDS "${idlScriptPath}"
DEPFILE "${depFile}"
WORKING_DIRECTORY "${PROJECT_BINARY_DIR}"
COMMENT "Processing IDL [${filePath}]"
)
# add sources and include paths
target_sources(
${TARGET}
PRIVATE ${generatedSources}
)
All of the generatedSources
have no spaces inside the names.
For Linux I’m using the Ninja generator & don’t see any problem with concurrency (with CMake 3.25 & 3.27.9).
My Windows environment
- Visual Studio Professional 2022 (17.9.5)
- CMake 3.27.9, 3.28.4, 3.29.0 (reproduced on all CMake 3.27+ versions)
P.S. Every CMake was reconfigured for dedicated clean directory