2016-06-12 3 views
0

Я пытаюсь построить проект, используя 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.

+0

Вы не связываете ничего, включая заголовки. Для заголовков в нескольких местах вы можете назначить список переменной –

+0

Да, как я могу создать переменную списка путем рекурсивного сбора всех файлов заголовков? Я должен отредактировать свой вопрос, чтобы сделать это более ясным. Как только я разрешу это, я перейду к файлам lib. – symbolix

+0

Вы не должны собирать файлы заголовков, '* .h'. Каталоги include_directories предназначены для каталогов, содержащих файлы заголовков. Вам нужно выполнить include_directories для каталога BOOX, таймера и типов, если вы не включите lib0.h, используя '#include . Тогда вам нужен только топ-каталог BOOX –

ответ

0

Я пытаюсь связать их с помощью следующей команды:

вы включая заголовок с командой вы дали, как бы вам также нужно определить ЛИЭС путь к библиотеке с link_directories(directory1 directory2 ...)

Смежные вопросы