CMake добавить заголовочные файлы к цели - PullRequest
2 голосов
/ 06 апреля 2020

Я знаю, что это глупый вопрос, но я новичок в c ++ и его среде разработки, и я хочу изучить его правильно.

Я пытаюсь узнать, как работает CMake. Используя CLion (который динамически генерировал CMakeList.txt), я увидел, что при создании класса к целевому исполняемому файлу добавляются и .cpp, и .h. Но при удалении файла .h из вызова add_executable код компилировался просто отлично, даже если в main.cpp была ссылка #include на этот заголовочный файл.

У меня вопрос, если добавить заголовки к целевому исполняемому файлу необязательны или нет? Я обычно использую VSCode, который не генерирует CMakeList.txt для меня, и я не хотел бы иметь привычку не включать заголовки в целевой исполняемый файл, если я должен это сделать.

Ответы [ 2 ]

1 голос
/ 06 апреля 2020

Как правило, я полагаю, что вы должны

SET_SOURCE_FILE_PROPERTIES(${header_files} PROPERTIES HEADER_FILE_ONLY ON)

, а затем

LIST (APPEND ${project_sources} ${header_files})

. Скомпилировать с $ {project_sources}.

1 голос
/ 06 апреля 2020

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

Некоторые IDE могут использовать перечисленные файлы заголовков для некоторых внутренних целей. Я не уверен, что Клион знает; его поведение может облегчать использование другой IDE.

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