Второй аргумент формы с двумя аргументами указывает, куда помещать двоичный каталог для добавленного подкаталога.
Вам просто нужно быть осторожным, чтобы там не было другого реального подкаталога B, также называемого "A", а также add_subdirectory'd... Потому что, если вы это сделаете, тогда это будет ошибка, так как CMake не может иметь два разных каталога исходных каталогов в один и тот же каталог сборки.
Ответ 2
К сожалению, нет.
В качестве решения я могу предложить вам добавить add_subdirectory (A) и add_subdirectory (B) на верхнем уровне и установить vars, которые вы хотите экспортировать из A с PARENT_SCOPE.
Это позволило бы B/CMakeLists.txt получить доступ к переменным, определенным в A/CMakeLists.txt