On 05/25/2015 08:27 AM, Stephen Kelly wrote:
> it should probably be an error to use TARGET_FILE on an 
> INTERFACE target. That doesn't seem to currently be the case.

We already reject that.  I've added a test case to show this in
another topic:

 Tests: Add case for rejecting $<TARGET_FILE:...> on an INTERFACE library
 http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=89253992

> Could you add a unit test showing what happens when using that genex with a
> target which has this property?

The changes include a test that it is an error to set the
proposed new property on any target other than an interface
library, and the genex fails as above for interface libraries.

> Can you make it an error to specify both IMPORTED_LOCATION and 
> IMPORTED_LINK_ITEM on the same target?

This would amount to a separate task of making IMPORTED_LOCATION
an error on an INTERFACE library.  It could be done as a separate
topic that would likely need a policy.

> I think a remaining problem with this is that is disincentivises acheiving 
> the larger goals. That is probably a small problem though, as there may be 
> other incentives for adding INTERFACE_{LINK,ARCHIVE}_OPTIONS. The other 
> incentives appear to be not-as-strong though.

The perfect is the enemy of the good.  The larger goals are much harder
to address.  This topic fills in a hole in the current capabilities
without opening a larger can of worms.

> Given the 'temporaryness' of this feature, it makes sense to narrow the 
> design and use a more-specific name like IMPORTED_SDK_LIBNAME instead.

I chose "IMPORTED_LIBNAME".

> The property should not support an item with a prefix of '-' (ie, CMake 
> should 
> unconditionally add the '-l'). Also, it should not be allowed to be a full 
> path (should not be allowed to contain a path separator).
[snip]
> So, I don't think IMPORTED_LINK_ITEM should consider this case at all, and
> should be designed with a narrower use case accepting only library names and
> a property name which reflects that.

Yes.  Done.

I reverted the FindOpenGL part of the changes for now.  The updated
implementation with more restrictions and the IMPORTED_LIBNAME name is:

 Allow imported INTERFACE libraries to specify a link library name
 http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d55f4683

The rest of your response is an excellent writeup that will be a useful
reference for future design work in those areas.

Thanks,
-Brad
-- 

Powered by www.kitware.com

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

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

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

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers

Reply via email to