Ответ Linux:
Помните, что Cmake не компилируется, хотя вы можете сделать cmake --build .
, это работает так же, как вызов make
в папке, в которой вы запускали cmake ../.. -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=DEBUG
. Так что Cmake - это просто генератор сборки, а не настоящий строитель.
Команда make
также не собирается, она просто читает некоторые сценарии / текстовые файлы (для простоты назовем их так), и в них есть правила для вызова нужного компилятора (GCC, CLANG и т. Д.). Таким образом, заголовки отображаются на этапе предварительной компиляции компилятором. Это обрабатывается компилятором. Поэтому, если вы хотите, чтобы все заголовки были включены, вы должны указать компилятору показать их вам.
Попробуйте добавить -M в качестве флага компилятора (я предполагал, что вы компилируете с GCC)
Вместо вывода результата предварительной обработки выведите правило
подходит для описания характеристик основного исходного файла.
Препроцессор выводит одно правило make, содержащее имя объектного файла
для этого исходного файла, двоеточие и имена всех включенных
файлы, в том числе поступающие из командной строки -include или -imacros
опции.
Меньший выходной флаг будет -H
-H Печать имени каждого используемого файла заголовка в дополнение к другим обычным действиям. Каждое имя имеет отступ, чтобы показать, насколько глубоко
Стек #include это. Предварительно скомпилированные заголовочные файлы также печатаются,
даже если они признаны недействительными; неверный предварительно скомпилированный заголовок
файл распечатан с "... x" и действительный с "...!".