По-прежнему, по крайней мере, насколько мне известно, в CMake нет стандартного способа указать добавление предварительно скомпилированного заголовка (PCH) в проект кросс-платформенным способом, поскольку способ обработки PCH с помощью компиляторов C++ очень между поставщиками. Для G ++ это обычно выполняется, просто добавляя пользовательскую команду , которая заботится о вызове компилятора с соответствующим вводом и генерирует его PCH.CMake - автоматическая зависящая зависимость предварительно скомпилированного заголовка?
Моя текущая проблема заключается в том, что CMake не будет анализировать зависимости зависимостей, которые вы указываете для пользовательской команды. Например, предположим следующую структуру:
pch.h
|- dependA.h
|- dependB.h
...
только предоставление pch.h
как зависимость приведет к генерации соответствующей мишени в соответствующем makefile
, который отслеживает изменения в pch.h
. Однако CMake не анализирует, включает внутриpch.h
и поэтому не распознает изменения dependA.h
и dependB.h
. Это распространяется дальше, если существуют зависимости для dependsA.h
и т. Д.
Примечание: Я знаю, что тот факт, что зависимости PCH и могут меняться, регулярно ставит весь процесс в вопрос. Однако, это так, как есть, и я не могу ничего с этим поделать.
Поскольку задача не слишком сложна, есть несколько очевидных идеи, которые приходят на ум:
Решения A:
Введите всю зависимость вручную. Очевидно, что это работает, но утомительно, как черт, и вовсе не масштабируется.
Раствор Б:
Если возможно, написать функцию CMake, которая автоматизирует процесс и разбора включает в себя «вручную».
Решение C:
ли что-то подобное с использованием другого языка, например, Python, и просто предоставить Cmake список зависимостей, чтобы добавить к пользовательской команде.
Раствор D:
Использование gcc
/g++
«s функция для разбора и распечатать дерево зависимостей от PCH и разобрать выход для извлечения списка зависимостей.
Мой вопрос: кто-нибудь знает более удобный и быстрый способ сделать это?
Спасибо! Я попробую. Жаль, что он не будет работать с ниндзя. – thokra
Знаете ли вы, что «сканер зависимостей» реализован make или может использоваться в коде cmake для получения включенных файлов и добавления их вручную в качестве зависимостей? – Knitschi