CMake add_executable () использует файл .cpp или .hpp? - PullRequest
1 голос
/ 10 июля 2019

Я прочитал несколько вопросов на этом сайте об использовании функции add_executable в CMake, но не нашел точного ответа на мою путаницу.

Мой вопрос: почему мы добавляем только .cpp файлы в функцию add_executable, но не .hpp файлы?

Я понимаю, что заголовочные файлы похожи на "индексы" для функций и классов в соответствующих .cpp файлах. Но если мы не включим их в функцию add_executable, как они будут использоваться в процессе сборки?

Например, будет ли использоваться файл A.hpp при импорте другого исходного файла A.hpp? Но тогда A.hpp не в функции add_executable ... Как программа узнает, где найти A.hpp?

Спасибо!

1 Ответ

2 голосов
/ 10 июля 2019

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

Из-за этого система сборки, такая как CMake, не должна знать о них при сборке окончательного исполняемого файла - их содержимое уже учитывается путем буквального включения их кода в файл .cpp.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...