On Fri, Oct 14, 2011 at 5:39 PM, Robert Dailey <rcdai...@gmail.com> wrote:
> If I have the following target dependency chain:
> A >> B >> C >> D
> Then target "D" must have the include directories (defined on a per project
> basis with a cache variable currently) for C, B, and A.
> Right now I'm trying to implement the logic for this myself using macro
> recursion, but as of right now I don't know of any way to get the list of
> target dependencies from a target. For example, if I query target C's
> dependencies, I should get a list back with just "B" in it. Then when I
> query for B's dependencies, I should get a list with A in it.
> I thought there might be a way to use get_target_property() for this, but
> doesn't seem so.
> How would you all recommend I go about this? Am I completely off base?
> Right now each target has a "${name}_INCLUDE_DIRS" internal cache variable,
> which is a list of that target's include directories, so that if other
> targets specify it as a dependency, they also know how to get to that
> target's header files.
>
> ---------
> Robert Dailey
>
> --
>
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/CMake_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.cmake.org/mailman/listinfo/cmake
>

At present, in the CMakeLists file, there is no way for you to analyze
the dependencies unless you track this information yourself in CMake
variables. That is typically the approach used in larger projects that
have more complex dependencies. See, for example, ITK in its new
modular form. Or Trilinos.


HTH,
David
--

Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to