Я пытаюсь построить проект, используя CMake. Одна из библиотек, которая требуется для проекта, расположена на пути вне моей директории проекта. Файлы заголовков разбросаны в подкаталогах, а также в корне папки. Немного как это:Как связать внешнюю библиотеку с cmake?
/some_remote_path/packages/BOOX/
|-> foo.h
|-> banana.h
|-> orange.h
|-> timer
|-> lib0.h
|-> lib1.h
|-> lib2.h
|-> types
|-> type0.h
|-> type1.h
|-> type2.h
...
Я пытаюсь связать их с помощью следующей команды:
include_directories (${SOME_OTHER_LIB_HEADERS} ${BOOX_HEADERS})
Как я могу хранить все заголовки в переменную ${BOOX_HEADERS}
? Я пробовал много вещей, таких как различные макросы, используя функцию GLOB_RECURSE
:
FILE(GLOB_RECURSE ${BOOX_HEADERS} ${path_to_boox_lib} *.h)
Но без какого-либо успеха. Я хотел бы пропустить запись сложного сценария find.cmake
. Это помогло бы мне (возможно?) Генерировать что-то вроде $ {BOOX_INCLUDE_DIRS}. Что было бы лучшим решением просто построить список заголовков и передать его компилятору с помощью CMake.
Вы не связываете ничего, включая заголовки. Для заголовков в нескольких местах вы можете назначить список переменной –
Да, как я могу создать переменную списка путем рекурсивного сбора всех файлов заголовков? Я должен отредактировать свой вопрос, чтобы сделать это более ясным. Как только я разрешу это, я перейду к файлам lib. – symbolix
Вы не должны собирать файлы заголовков, '* .h'. Каталоги include_directories предназначены для каталогов, содержащих файлы заголовков. Вам нужно выполнить include_directories для каталога BOOX, таймера и типов, если вы не включите lib0.h, используя '#include. Тогда вам нужен только топ-каталог BOOX –