Описывает свойства у targets вместо глобальных include и compiler flags
Зачем
Зачем это нужно
Передаёт публичные зависимости потребителю, а внутренние оставляет private
Подключает тесты через CTest и не смешивает артефакты с исходниками
Вопросы
Частые вопросы
Почему библиотека собирается, а приложение не видит заголовки?
Include-путь объявлен private или вообще задан глобально в другом каталоге. Публичные заголовки должны быть частью интерфейса target. Модель проследит связь через target_link_libraries и выставит PUBLIC или INTERFACE только там, где потребителю действительно нужен этот путь.
Нужно ли писать флаги компилятора вручную?
Стандарт языка и многие возможности лучше задавать свойствами target, чтобы CMake выбрал правильный флаг для MSVC, GCC или Clang. Специфические предупреждения можно разделить по компиляторам. Модель не будет передавать Unix-флаг в Windows-сборку и проверит область действия.
Как подключать сторонние библиотеки?
Предпочтительно через установленный package config, менеджер зависимостей или контролируемый FetchContent с фиксированной версией. Ручные абсолютные пути ломаются на машине коллеги. Модель выберет способ по вашей среде и не оставит сетевую загрузку незакреплённой на случайной ветке.
Рядом
Соседние страницы каталога
Дальше — весь каталог задач: поиск по названию, темы и фильтры.