Заголовочные файлы, которые часто имеют расширение .h или .hpp, хотя и не всегда - например, заголовки стандартной библиотеки C ++ не имеют расширений - "вставляются копиями" компилятором в каждый .cpp ( или .C, или .cc) с директивой #include
для включения файла.
Из-за этого система сборки, такая как CMake, не должна знать о них при сборке окончательного исполняемого файла - их содержимое уже учитывается путем буквального включения их кода в файл .cpp.
Однако системы сборки должны знать об этих файлах при указании зависимостей - чтобы гарантировать, что все приложение перестраивается при каждом обновлении любого из этих файлов, а также для обеспечения правильного пути включения для команды компиляции.