[cmake-developers] target_link_libraries not callable from other directory scopes

Brad King brad.king at kitware.com
Fri Apr 27 09:13:03 EDT 2018


On 04/26/2018 07:18 PM, Craig Scott wrote:
> Perhaps it was an oversight that newer target_... commands don't have the same
> restriction as target_link_libraries(), but it is a very useful oversight!
> As the linked blog article explains, it allows much better modularity of the
> project.

Yes, and usage requirements make non-local effects commonplace anyway.
Those didn't exist when the `target_link_libraries` restriction was
first put in place.  Back then *everything* that affected a target's
build was in its own `CMakeLists.txt` file.

> Being able to use add_subdirectory() instead of include() allows the subdirectory
> to be more isolated

The original restriction was to prevent parent and sibling directories from
affecting a target's build.  We didn't think much about subdirectories as
a way of incrementally accumulating build information for a target.

I think it would be fine to lift the restriction if there is no technical
hurdle.

-Brad


More information about the cmake-developers mailing list