I was partially correct. You don’t need to set SOURCE_DIR or BINARY_DIR, but SUBBUILD_DIR has no default. You can confirm the behavior for SOURCE_DIR and BINARY_DIR with the following minimal example project:
cmake_minimum_required(VERSION 3.30)
project(example)
include(FetchContent)
FetchContent_Declare(
location_tags
DOWNLOAD_COMMAND ${CMAKE_COMMAND} -E echo "SOURCE_DIR = <SOURCE_DIR>"
COMMAND ${CMAKE_COMMAND} -E echo "BINARY_DIR = <BINARY_DIR>"
)
FetchContent_MakeAvailable(location_tags)
Note the first line requires at least CMake 3.30 for the above to work, otherwise you won’t see the output from those commands.