Grapeoff
@Grapeoff
В чём концепция...?

Что в CMAKE я должен считать библиотекой?

У меня есть проект на C++ с вот такой структурой:

include/
lib/
src/

В src я кладу все CPP файлы. Но мне также понадобилась библиотека tinyfiledialogs
Её файлы я положил в lib/, а в main.cpp я подключил её так

#include "../lib/tinyfiledialogs/tinyfiledialogs.h"

Теперь чтобы мне скомпилировать это с помощью g++ мне нужно просто добавить эту библиотеку в аргументы команды.

g++ src/main.cpp lib/tinyfiledialogs/tinyfiledialogs.h

В cmake есть директива add_library(). В каких случаях мне нужно её использовать и нужно ли использовать в данном случае? Может просто сувать все файлы в add_executable()?
  • Вопрос задан
  • 35 просмотров
Решения вопроса 1
@res2001
Developer, ex-admin
Вообще обычно бибилотеки ставятся отдельно в систему (для линукс) с помощью стандартного пакетного менеджера.

Если вашей библиотеки в пакетном менеджере нет, то можно и собирать из исходников.
В этом случае можно и просто "сувать" все файлы в add_executable. Никто ж вам это запретить не может.
Но обычно проще, лучше и универсальней для сторонних библиотек создавать свои собственные цели с помощью add_library и уже их подключать к основной цели с помощью target_link_libraries. Библиотеку можно делать как динамическую, так и статическую.
Если проект достаточно развесистый и содержит например тесты и/или несколько исполняемых файлов, то вообще можно в каждом каталоге проекта создавать отдельную статическую библиотеку. На больших проектах это часто может сэкономить время на компиляции, за счет того что в несколько конечных целей будут линковаться уже готовые библиотеки, а не пересобираться из исходников каждый раз.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы