[CMake] inherit include directories from child directory

Philip Lowman philip at yhbt.com
Sat Apr 4 00:26:20 EDT 2009


On Fri, Apr 3, 2009 at 6:23 AM, elizabeta petreska <
elizabeta.petreska at gmail.com> wrote:

> Hello
>
> I have the following problem.
> I have two libraries A and B.  A depends on B. I am adding B in A with
> add_subdirectory
>
>
> ---this is B cmakelists.txt
> ......
> include_directories(B_external_includes)
>
>
>
> --this is A cmakelists.txt
> .....
> add_subdirectory(../B ${CMAKE_BINARY_DIR})
>
> include_directories(B_includes B_external_includes)
>
>
>
> B uses some external libraries, so it lists the headers from the external
> libraries in its include_directories().
> The thing is in that A also have to have the headers from the external
> libraries listied in its include_directories in order
> to compile. This is unacceptable for me, because all libraries that are
> using B should include not just B_includes but also B_external_inlcudes.
>
> So the question is this :
> Is there any way that A can inherit the include_directories specified by
> its child B, or maybe some other workaround?


By design, include_directories() only affects the current directory and any
subdirectories added with add_subdirectory().

If "A" and "B" are built in the same CMakeLists.txt they will have the same
include paths.  If this is a problem the easiest way to solve the problem is
to build them in separate directories.  If B is built in a subdirectory of A
it will inherit A's include_directories().

Does this help at all?

-- 
Philip Lowman
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20090404/4bd8939a/attachment.htm>


More information about the CMake mailing list