Может ли CMakeLists.txt зависеть от файла, проанализированного функцией?

Я довольно новичок в CMake, впервые начав с более крупного проекта, состоящего из множества подпроектов.

По определенным причинам (описанным ниже для любопытных) у меня уже есть набор включаемых файлов, которые содержат информацию об исходных файлах, необходимых для каждой цели CMake (lib или exe) - и на данный момент я предпочитаю (повторно) использовать эти файлы (причина также описана ниже)

Написание функции для анализа этих файлов и добавления их содержимого в качестве исходных файлов к целевым объектам было на удивление легкой задачей.

Но - теперь проблема: очевидно, я хочу, чтобы каждая цель CMakeLists.txt зависела от конкретного включаемого файла, который генерирует список исходных файлов, так что изменения во включаемом файле будут обнаруживаться так, как если бы это были изменения в CMakeLists.txt. само по себе, но я просто не могу найти никаких ссылок на то, как этого добиться.

N.B .: Я нашел AddFileDependencies, но это для добавления зависимостей от исходных файлов, а не CMakeLists.txt. Однако сам CMake может каким-то образом выяснить зависимости от включенного файла .cmake, поэтому я решил, что это можно сделать как-нибудь.

Фон для любопытных:
Для этого проекта (довольно много библиотек, используемых целым рядом исполняемых целей, все организованные как подпроекты) я использовал QMake (фактически не используя сам Qt) для настройки make-файлов. Благодаря этому я смог использовать Qt Creator, но все еще мог генерировать файлы Visual Studio Solution / Project.автомагически, Мы также продолжаем оценивать различные IDE, и выбор еще не сделан. Но самой важной причиной использования генератора, такого как QMake / CMake, было то, что он не был вынужден настраивать файлы VS для всех этих подпроектов вручную.

Хотя мне иногда приходилось обманывать QMake, чтобы делать то, что я хотел, все шло хорошо - даже для решения VS - за исключением одного: Visual Studio путает зависимости от Flex / Bison и других файлов с использованием пользовательских правил сборки. Он продолжает перекомпилировать файлы Flex / Bison / другие с надписью «изменена командная строка», которую я отказался от попыток исправить.

По этой причине, я думаю, я бы вместо этого попробовал CMake в качестве генератора, который пока выглядит очень многообещающе - хотя отсутствие встроенной поддержки предварительно скомпилированных заголовков в CMake в наши дни несколько нелепо (не по теме, я знаю).

Поскольку поддержка Qt Creators CMake далеко не так хороша, как поддержка проектов QMake, я понял, что использование подхода синтаксического анализа файлов .pri, содержащих список исходных файлов, позволило бы мне использовать QMake и CMake бок о бок - тем более что остальные Настройки проекта гораздо менее сложны, чем в большинстве проектов с открытым исходным кодом.

Ответы на вопрос(2)

Ваш ответ на вопрос