FetchContent: Relative SOURCE_DIR override cannot be a hard error

Fixes: #21624
This commit is contained in:
Craig Scott
2020-12-22 10:43:17 +11:00
parent 81809d1485
commit 51595e5f01
4 changed files with 17 additions and 1 deletions
+8 -1
View File
@@ -1053,7 +1053,14 @@ function(FetchContent_Populate contentName)
# so no population is required. The build directory may still be specified
# by the declared details though.
if(NOT EXISTS "${FETCHCONTENT_SOURCE_DIR_${contentNameUpper}}")
if(NOT IS_ABSOLUTE "${FETCHCONTENT_SOURCE_DIR_${contentNameUpper}}")
# Don't check this directory because we don't know what location it is
# expected to be relative to. We can't make this a hard error for backward
# compatibility reasons.
message(WARNING "Relative source directory specified. This is not safe, "
"as it depends on the calling directory scope.\n"
" FETCHCONTENT_SOURCE_DIR_${contentNameUpper} --> ${FETCHCONTENT_SOURCE_DIR_${contentNameUpper}}")
elseif(NOT EXISTS "${FETCHCONTENT_SOURCE_DIR_${contentNameUpper}}")
message(FATAL_ERROR "Manually specified source directory is missing:\n"
" FETCHCONTENT_SOURCE_DIR_${contentNameUpper} --> ${FETCHCONTENT_SOURCE_DIR_${contentNameUpper}}")
endif()