[CMake] INCLUDE_DIRECTORIES in sub-directories doesn't work?

THE HIGHHAT thehighhat at gmail.com
Tue Nov 25 17:59:05 EST 2008


On Tue, Nov 25, 2008 at 3:43 PM, Sean Soria <sean.soria at gmail.com> wrote:
> No, this doesn't work either:
> CMakeLists.txt:
> ADD_SUBDIRECTORY(foo)
> ADD_EXECUTABLE(hello main.c foo/main.c)
>
> foo/CMakeLists.txt:
> SET_PROPERTY(SOURCE main.c PROPERTY INCLUDE_DIRECTORIES
> ${CMAKE_CURRENT_SOURCE_DIR})
>
> On Tue, Nov 25, 2008 at 2:26 PM, Sean Soria <sean.soria at gmail.com> wrote:
>> Include doesn't seem to do what I would expect either.  I want to add
>> include directories for any files found in foo.  it seems
>> include_directories doesn't do it because there must be a target in
>> that directory.  would setting the source property do it?
>>
>> On Tue, Nov 25, 2008 at 2:10 PM, Bill Hoffman <bill.hoffman at kitware.com> wrote:
>>> Sean Soria wrote:
>>>>
>>>> I had them switched originally and just double checked.  This also doesn't
>>>> work:
>>>> CMakeLists.txt:
>>>> ADD_SUBDIRECTORY(foo)
>>>> ADD_EXECUTABLE(hello main.c foo/main.c)
>>>>
>>>> foo/CMakeLists.txt:
>>>> INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
>>>>
>>>
>>> The problem is the add_subdirectory.  Although the docs are not clear on
>>> this include_directories is essentially a directory property.  It sets the
>>> include directories for all targets in that directory.  You could use
>>> include instead.
>>>
>>> include(foo/includes.cmake)
>>>
>>>
>>> -Bill
>>>
>>>
>>
> _______________________________________________
> CMake mailing list
> CMake at cmake.org
> http://www.cmake.org/mailman/listinfo/cmake
>

Use the cache to overcome scope issues....


CMakeLists.txt:

add_subdirectory ( foo )
include_directories ( ${NESTED_DIRS} )
add_executable ( hello main.c )


foo/CMakeLists.txt:

set ( NESTED_DIRS  ${CMAKE_CURRENT_SOURCE_DIR}  CACHE INTERNAL "DIRS" )


More information about the CMake mailing list