[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