Библиотека подкаталогов копирует все включенные в один каталог при установке. Как включить этот каталог при связывании сC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Библиотека подкаталогов копирует все включенные в один каталог при установке. Как включить этот каталог при связывании с

Сообщение Anonymous »

Я пытаюсь использовать https://github.com/taglib/taglib в своем проекте и ссылаться на него, сохраняя при этом возможность использовать эту библиотеку, установленную в ОС. Проблема в том, что эта библиотека копирует все файлы заголовков в $PREFIX/include/taglib при установке make, а затем вы должны выполнить #include при связывании с файлами, предоставленными ОС. lib.
Но когда я хочу собрать продаваемую версию, я делаю это

Код: Выделить всё

 set(TAGLIB_DIR 3rdparty/taglib-2.0.2)
add_subdirectory(${TAGLIB_DIR})
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE tag)
target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${TAGLIB_DIR}/taglib ${TAGLIB_DIR}/taglib/ape ${TAGLIB_DIR}/taglib/mpeg ${TAGLIB_DIR}/taglib/mpeg/id3v2 ...etc all subdirs with headers)
Невозможно просто перечислить все подкаталоги, в которых расположены заголовки, потому что мне приходится ссылаться на них напрямую, например #include , который находится в taglib/mpeg /id3v2/. Между тем, такое же подключение для библиотеки всей ОС — #include .
Действительно ли мне это нужно делать

Код: Выделить всё

#ifdef USE_SYSTEM_TAGLIB
#include "taglib/fileref.h"
#include "taglib/tag.h"
#else
#include "fileref.h"
#include "tag.h"
#endif
? потому что я сейчас делаю это в qmake и хочу переключиться на cmake, чтобы избавиться от этого.
Я новичок в cmake и чувствую, что я не хватает чего-то очевидного, но это своего рода неизвестность второго порядка. Кроме того, как именно эта библиотека выполняет копирование? Где указано, что нужно рекурсивно находить все заголовки и копировать их в prefix/include?

Подробнее здесь: https://stackoverflow.com/questions/792 ... w-to-inclu
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»