[CMake] communicat variables from sub directories

James Bigler bigler at cs.utah.edu
Thu Apr 6 12:00:23 EDT 2006


Brad King wrote:
> Axel Roebel wrote:
> 
>> Hello,
>>
>> I am trying to collect source file lists from sub directories
>> into the main cmake cache.
>>
>> The idea is that the main directory gets a collection of all source 
>> files and header files such that it may run a doxygen whenever one of 
>> these files has changed.
>>
>> Imagine
>>
>> SET(DOCFILES "" CACHE INTERNAL "list of all files containing doc")
>> ADD_SUBDIRECTORY(src )
>> ADD_SUBDIRECTORY(include)
>>
>> and in each subdir I tried various versions like
>>
>> SET(DOCFILES ${DOCFILES}${LISTOFSRCS} )
>>
>> or what I considered more likely to be correct
>>
>> SET(DOCFILES ${DOCFILES}${LISTOFSRCS} CACHE INTERNAL "list of all 
>> files containing doc")
>>
>>
>> This gives me a correct list of files in the subdirectory
>> but the variable in the main directory is not changed.
>>
>> For now I found that  I need to create a new cache variable in the
>> sub directories to be able to read the content of that variable in the 
>> main directory so that's what I do now.
>> Does anybody know how to make that work with a more elegant
>> solution ?
> 
> 
> See "bin/cmake --help-command GET_DIRECTORY_PROPERTY".
> 
> GET_DIRECTORY_PROPERTY(
>   subdir_SOMEVAR DIRECTORY subdir DEFINITION SOMEVAR
> )

What I've done is to use the INCLUDE() function.  This will work with older 
versions of CMake that don't have the newer GET_DIRECTORY_PROPERTY functionality.

INCLUDE(subdir/CMakeLists.txt)  or
INCLUDE(subdir/sources.cmake)

Inside these directories paths are relative to the CMakeLists.txt file that 
included it.

sources.cmake :

SET(MY_SOURCES
    subdir/Source.cc
    subdir/Source2.cc
    subdir/Source3.cc
    )

James


More information about the CMake mailing list