CMake и обработка файлов заголовков подпапок

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

Структура выглядит примерно так

root
    CMakeLists.txt
    bin
    lib
    lib0
        CMakeLists.txt
        lib0.h
        lib0.cpp
    lib1
        CMakeLists.txt
        lib1.h
        lib1.cpp
   ...

В CMakeLists.txt для корневого каталога у меня есть такие объявления:

set(ROOT /blah/blah/root)    

include_directories(${ROOT}/lib0)
include_directories(${ROOT}/lib1)

add_subdirectory(lib0)
add_subdirectory(lib1)

В CMakeLists.txt для подпапок у меня:

set(lib0_SOURCES "")
list(APPEND lib0_SOURCES lib0.cpp)
add_library(lib0_lib ${lib0_SOURCES})

И мои заголовки для библиотек выглядят как (предположим, что это lib0.h):

#include "lib1/lib1.h"
...

CMake работает нормально, без ошибок, но когда я перехожу к компиляции, я получаю сообщение об ошибке типа:

In file included from /blah/blah/root/lib0/lib0.cpp:1:0:
/blah/blah/root/lib0/lib0.h:1:30: fatal error: lib1/lib1.h: No such file or directory
6
задан dusktreader 17 August 2012 в 20:01
поделиться