cmake_minimum_required(VERSION 3.9) include(ExternalProject) # Verify COMMAND keyword is recognised after various *_COMMAND options ExternalProject_Add(multiCommand DOWNLOAD_COMMAND "${CMAKE_COMMAND}" -E echo "download 1" COMMAND "${CMAKE_COMMAND}" -E echo "download 2" UPDATE_COMMAND "${CMAKE_COMMAND}" -E echo "update 1" COMMAND "${CMAKE_COMMAND}" -E echo "update 2" PATCH_COMMAND "${CMAKE_COMMAND}" -E echo "patch 1" COMMAND "${CMAKE_COMMAND}" -E echo "patch 2" CONFIGURE_COMMAND "${CMAKE_COMMAND}" -E echo "configure 1" COMMAND "${CMAKE_COMMAND}" -E echo "configure 2" BUILD_COMMAND "${CMAKE_COMMAND}" -E echo "build 1" COMMAND "${CMAKE_COMMAND}" -E echo "build 2" TEST_COMMAND "${CMAKE_COMMAND}" -E echo "test 1" COMMAND "${CMAKE_COMMAND}" -E echo "test 2" INSTALL_COMMAND "${CMAKE_COMMAND}" -E echo "install 1" COMMAND "${CMAKE_COMMAND}" -E echo "install 2" ) # Workaround for issue 17229 (missing dependency between update and patch steps) ExternalProject_Add_StepTargets(multiCommand NO_DEPENDS update) ExternalProject_Add_StepDependencies(multiCommand patch multiCommand-update) # Force all steps to be re-run by removing timestamps from any previous run ExternalProject_Get_Property(multiCommand STAMP_DIR) file(REMOVE_RECURSE "${STAMP_DIR}") file(MAKE_DIRECTORY "${STAMP_DIR}")