diff --git a/CMake/Utilities/imstkAddExternalProject.cmake b/CMake/Utilities/imstkAddExternalProject.cmake index 15bb80c864f144aede3c83a48740854821731ad9..4f40bbca7f3ab604f3743e48ef0566c7dc6c4aee 100644 --- a/CMake/Utilities/imstkAddExternalProject.cmake +++ b/CMake/Utilities/imstkAddExternalProject.cmake @@ -42,16 +42,16 @@ macro(imstk_add_external_project extProj) set(oneValueArgs RELATIVE_INCLUDE_PATH SOURCE_DIR BINARY_DIR) set(multiValueArgs DEPENDENCIES) include(CMakeParseArguments) - cmake_parse_arguments(${extProj} "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) + cmake_parse_arguments(_imstk_add_ep_${extProj} "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) #----------------------------------------------------------------------------- # Verbose (display arguments) #----------------------------------------------------------------------------- - if(${extProj}_VERBOSE) + if(_imstk_add_ep_${extProj}_VERBOSE) foreach(opt ${options} ${oneValueArgs} ${multiValueArgs}) - message(STATUS "${extProj}_${opt}: ${${extProj}_${opt}}") + message(STATUS "_imstk_add_ep_${extProj}_${opt}: ${_imstk_add_ep_${extProj}_${opt}}") endforeach() - message(STATUS "${extProj}_UNPARSED_ARGUMENTS: ${${extProj}_UNPARSED_ARGUMENTS}") + message(STATUS "_imstk_add_ep_${extProj}_UNPARSED_ARGUMENTS: ${_imstk_add_ep_${extProj}_UNPARSED_ARGUMENTS}") endif() #----------------------------------------------------------------------------- @@ -69,7 +69,7 @@ macro(imstk_add_external_project extProj) ExternalProject_Include_Dependencies( ${extProj} PROJECT_VAR PROJECT_VAR_TEMP EP_ARGS_VAR ${extProj}_EP_ARGS - DEPENDS_VAR ${extProj}_DEPENDENCIES + DEPENDS_VAR _imstk_add_ep_${extProj}_DEPENDENCIES USE_SYSTEM_VAR USE_SYSTEM_${extProj} SUPERBUILD_VAR ${PROJECT_NAME}_SUPERBUILD ) @@ -81,6 +81,15 @@ macro(imstk_add_external_project extProj) imstk_define_external_dirs( ${extProj} ) + # SOURCE_DIR and BINARY_DIR variables set in the caller scope or + # by "imstk_define_external_dirs" take precedence + if(DEFINED ${extProj}_SOURCE_DIR) + set(_imstk_add_ep_${extProj}_SOURCE_DIR ${${extProj}_SOURCE_DIR}) + endif() + if(DEFINED ${extProj}_BINARY_DIR) + set(_imstk_add_ep_${extProj}_BINARY_DIR ${${extProj}_BINARY_DIR}) + endif() + set(${extProj}_CMAKE_CACHE_ARGS) if(DEFINED ${extProj}_INSTALL_DIR) list(APPEND ${extProj}_CMAKE_CACHE_ARGS @@ -92,15 +101,15 @@ macro(imstk_add_external_project extProj) # Add project #----------------------------------------------------------------------------- ExternalProject_add( ${extProj} - PREFIX ${${extProj}_PREFIX} - SOURCE_DIR ${${extProj}_SOURCE_DIR} # from above or parsed argument - BINARY_DIR ${${extProj}_BINARY_DIR} # from above or parsed argument - TMP_DIR ${${extProj}_TMP_DIR} # from above - STAMP_DIR ${${extProj}_STAMP_DIR} # from above + PREFIX ${${extProj}_PREFIX} # from caller's scope (see imstk_define_external_dirs) + SOURCE_DIR ${_imstk_add_ep_${extProj}_SOURCE_DIR} # from caller's scope (see imstk_define_external_dirs) or parsed argument + BINARY_DIR ${_imstk_add_ep_${extProj}_BINARY_DIR} # from caller's scope (see imstk_define_external_dirs) or parsed argument + TMP_DIR ${${extProj}_TMP_DIR} # from caller's scope (see imstk_define_external_dirs) + STAMP_DIR ${${extProj}_STAMP_DIR} # from caller's scope (see imstk_define_external_dirs) ${${extProj}_EP_ARGS} # from ExternalProject_Include_Dependencies - CMAKE_CACHE_ARGS ${${extProj}_CMAKE_CACHE_ARGS} - ${${extProj}_UNPARSED_ARGUMENTS} # from unparsed arguments of this macro - DEPENDS ${${extProj}_DEPENDENCIES} # from parsed argument + CMAKE_CACHE_ARGS ${${extProj}_CMAKE_CACHE_ARGS} # from above + ${_imstk_add_ep_${extProj}_UNPARSED_ARGUMENTS} # from unparsed arguments of this macro + DEPENDS ${_imstk_add_ep_${extProj}_DEPENDENCIES} # from parsed argument ) #----------------------------------------------------------------------------- @@ -131,7 +140,7 @@ macro(imstk_add_external_project extProj) # Keep track of include path for superbuild #----------------------------------------------------------------------------- list(APPEND CMAKE_INCLUDE_PATH - ${${extProj}_SOURCE_DIR}/${${extProj}_RELATIVE_INCLUDE_PATH} + ${_imstk_add_ep_${extProj}_SOURCE_DIR}/${_imstk_add_ep_${extProj}_RELATIVE_INCLUDE_PATH} ) endmacro()