Подтвердить что ты не робот

Cmake variable scope, add_subdirectory

У меня есть CMakeLists.txt в корне моего проекта и один в папке /src. В папке /src содержится только переменная с .cpp файлами (set (SOURCEFILES main.cpp foo.cpp)), а в корневой CMakeLists.txt я делаю add_subdirectory(src), а позже я add_executable(MyApp ${SOURCEFILES}).

Но cmake дает мне ошибку

add_executable с неправильным количеством аргументов, без источников при условии,

Как получить cmake, чтобы увидеть переменную? Я читал, что cmake знает только глобальные переменные, но это, очевидно, не так...

4b9b3361

Ответ 1

Как упоминалось в документации команды set, каждый каталог, добавленный с помощью add_subdirectory, или каждая функция, объявленная с помощью function, создает новую область.

Новая дочерняя область наследует все определения переменных от своей родительской области. Переменные в новой дочерней области с помощью команды set будут видны только в дочерней области, если не используется опция PARENT_SCOPE.

Чтобы сделать назначение SOURCEFILES видимым в корневой папке вашего проекта, попробуйте:

set (SOURCEFILES main.cpp foo.cpp PARENT_SCOPE)