ExternalProject_Add: steps may execute multiple times in parallel build
This issue has the same title as #18663 (closed) but it's different.
Consider following CMakeLists.txt:
cmake_minimum_required(VERSION 3.15)
project(proj NONE)
include(ExternalProject)
ExternalProject_Add(proj
SOURCE_DIR "path/to/second/project"
)
And a second CMakeLists.txt in path/to/second/project
folder:
cmake_minimum_required(VERSION 3.15)
project(second_project NONE)
include(ExternalProject)
ExternalProject_Add(second_project
SOURCE_DIR "."
BUILD_ALWAYS 1
CONFIGURE_COMMAND
COMMAND ${CMAKE_COMMAND} -E echo "Running CONFIGURE_COMMAND"
BUILD_COMMAND
COMMAND ${CMAKE_COMMAND} -E echo "Running BUILD_COMMAND"
INSTALL_COMMAND
COMMAND ${CMAKE_COMMAND} -E echo "Running INSTALL_COMMAND"
)
install(CODE "") # Dummy target for when all installables have been disabled
When I build this project on Linux:
cmake .. && cmake --build . --target proj
I get multiple Running BUILD_COMMAND
and/or Running INSTALL_COMMAND
messages. However, when I remove BUILD_ALWAYS 1
from the second CMakeLists.txt then it doesn't execute the commands multiple times (as expected).
Is this a bug or am I missing something?
Tested on CMake 3.18.4 and 3.20.2
Edited by Murat Kilivan