LINUX.ORG.RU

Headers cmake libraries

 , ,


0

2

Использую cmake довольно интенсивно во многих проектах, но до сих пор все проекты делались все в один executable. Этот же требует использования системы библиотек.

С виду всё было просто - в каждой папочке делаешь CMakeLists.txt, линкуешь к таргету и готово. Ноо на деле это вышло не так просто - target_include_directories для библиотек не добавляет заголовки к основному таргету. Линковка библиотеки к библиотеке тоже происходит странно. А копание в документации не принесло плоды.

Может кто-нибудь глянуть глазком, что не так? Уже второй день бьюсь. Я смог скомпилировать, когда пихнул все сорсники в add_executable - без использования библиотек, но это выглядит костыльным для cmake и не годится.

https://github.com/SL-RU/rbcodecs - это кодеки из проекта rockbox. Я выдрал(разработчики разрешили и убедительно сказали, что внешних зависимостей нет. но они были... В итоге пришлось перелопачивать всю их систему, выбирать зависимости, удалять ненужное) их для того, чтобы использовать в своём проекте опенсорсного хайфай плеера на cs4398.

Сейчас там должен скомпиллироваться тестовый проект с SDLкой. Основной CMakeLists.txt в папке test/ . Все 4 библиотеки в libs.

★★★★

Вопрос исчерпан.

1) Для наследования дефенишенов от родителя они должны быть объявлены до add_subdir 2) таргет линк таргет могут быть цикличными 3) их порядок тоже имеет значение

SL_RU ★★★★
() автор топика
Ответ на: комментарий от SL_RU

А самое главное - add_subdirectory работает адекватно только с сабдиректориями, с папками извне - совсем ниоч - не наследуются дифенишены, проблемы с инклудами и вообще

SL_RU ★★★★
() автор топика

target_include_directories для библиотек не добавляет заголовки к основному таргету

Добавляет PUBLIC и INTERFACE

annulen ★★★★★
()
Ответ на: комментарий от annulen

INTERFACE добавляет - прелесть! Спасибо ^^

SL_RU ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.