ExternalProject: Restore support for Xcode with an effective platform

Revert commit cabad8a37f (ExternalProject: Always use $<CONFIG> for
source files, 2023-02-02, v3.27.0-rc1~550^2~3) and restore
Xcode-specific behavior intentionally preserved by commit c111d440ce
(ExternalProject: Express per-config step stamp file paths using CONFIG
genex, 2022-06-08, v3.24.0-rc1~15^2).  Unfortunately we still do not
have a test case, so leave a comment to avoid reverting this.

Issue: #23645
Issue: #23652
This commit is contained in:
Brad King
2024-05-13 14:28:05 -04:00
parent 9f7ec4c297
commit 0a3caf0878

View File

@@ -2187,7 +2187,16 @@ function(_ep_get_configuration_subdir_genex suffix_var)
set(suffix "")
get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
if(_isMultiConfig)
set(suffix "/$<CONFIG>")
if(CMAKE_GENERATOR STREQUAL "Xcode")
# The Xcode generator does not support per-config sources,
# so use the underlying build system's placeholder instead.
# FIXME(#23652): We have no test for the use case requiring
# CMAKE_CFG_INTDIR for XCODE_EMIT_EFFECTIVE_PLATFORM_NAME,
# but $<CONFIG> does not work.
set(suffix "/${CMAKE_CFG_INTDIR}")
else()
set(suffix "/$<CONFIG>")
endif()
endif()
set(${suffix_var} "${suffix}" PARENT_SCOPE)
endfunction()