У меня есть большой проект, который я разделил на «модули» или «подпроекты». Структура каталогов выглядит так (упрощенно, но основная идея):
project-root/
CMakeLists.txt <-- Contains some variable definitions
module1/
CMakeLists.txt <-- Receives variable definitions from top-level
src/
module2/
CMakeLists.txt <-- Receives variable definitions from top-level
src/
В корневом файле CMakeLists.txt не определены библиотеки или исполняемые файлы. Он использует add_subdirectory(module1)
и add_subdirectory(module2)
для обозначения модулей более низкого уровня, у которых есть библиотеки и исполняемые файлы.
Теперь все это работает нормально. Я использую CLion, и он может собрать весь проект. Моя проблема заключается в том, что разработчик хочет скомпилировать только один из модулей, не имея дело с другими модулями.
Я создал переменные в CMakeLists.txt корневого уровня, которые используются в файлах CMakeLists.txt модулей. Но если я попытаюсь скомпилировать только один из модулей, конечно, переменная не определена (или пуста). Есть ли стандартный способ решения подобных проблем? Я хочу иметь возможность компилировать каждый модуль независимо, но я не хочу переопределять переменные в каждом файле CMakeLists.txt.