'How to get the name of the parent project in CMake?

Please see the below minimal example:

├───CMakeLists.txt
├───bar
│   ├───CMakeLists.txt

CMakeLists.txt

cmake_minimum_required(VERSION 3.20)
project(foo)
add_subdirectory(bar)

bar/CMakeLists.txt

project(bar)
cmake_path(GET CMAKE_CURRENT_LIST_DIR PARENT_PATH BAR_PARENT_DIR)
# how can I get `foo` given ${BAR_PARENT_DIR}?
# or is there a better way to get `foo`?

The real use case is that originally foo was extracted via ${CMAKE_PROJECT_NAME}, but recently there's a need to make the repo submodule compatible. Once this repo is being used as a submodule, ${CMAKE_PROJECT_NAME} won't be equivalent to foo anymore. Additionally, bar is a submodule of foo, so we aren't allowed to hard code foo into bar/CMakeLists.txt because that would break other repos that are using bar as a submodule.

Is there a way to extract the project name of a CMakeLists.txt from a parent directory?

Edit: I am looking for a solution that will make the below scenario work. Meaning foo is submoduled by another project. e.g.

baz
├───CMakeLists.txt
├───foo
│   ├───CMakeLists.txt
│   ├───bar
│        ├───CMakeLists.txt


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source