Cmake include_directories ()

Это дерево моего проекта:

project
| + src
| + external
| | + foo
| | | + include
| | | | - foo.hpp
| | | + src
| | | | - foo.cpp
| | | | - CMakeLists.txt
| | | - CMakeLists.txt 
| | + CMakeLists.txt 
| + src
| | - main.cpp
| - CMakeLists.txt

foo.cpp включает в себя foo.hpp:

// foo.cpp
#include "foo.hpp"

Теперь проблема в том, что при включении каталога в верхний CMake успешно найден файл foo.hpp, но если я включу его в подпроект, он этого не сделает. Есть ли причина для этого? (каталоги включаются до компиляции исполняемого файла).

// project/CMakeLists.txt
include_directories(external/foo/include) //OK
add_subdirectory(external)

add_executable(main main.cpp)
target_link_libraries(main foo)

// project/external/CMakeLists.txt
add_subdirectory(foo)

// project/external/foo/CMakeLists.txt 
include_directories(include) // NOT WORKING
add_subdirectory(src)

// project/external/foo/src/CMakeLists.txt 
add_library(foo foo.cpp)

Ответы на вопрос(2)

Ваш ответ на вопрос