[cmake-developers] Adding automatic checks for required targets in target-export files ?

Stephen Kelly steveire at gmail.com
Mon Feb 11 13:41:54 EST 2013


Alexander Neundorf wrote:

> On Monday 11 February 2013, Brad King wrote:
>> On 02/10/2013 10:14 AM, Alexander Neundorf wrote:
>> > 1) either put a check for the required targets in the generated targets
>> > file, and make find_package() fail by setting foo_FOUND to FALSE. This
>> > should be relatively straightforward to implement, and needs only code
>> > in the generated targets file. This is good.
>> 
>> I like this approach better than the second one also.
>> 
>> > On the downside, this will probably make the cmake
>> > run fail for (some ?) projects where it currently succeeds, although
>> > they do not take the dependency order into account when searching
>> > packages.
>> 
>> I think we can add a policy for this.  If not set, warn and use OLD.
>> If OLD, silently accept the missing targets.  If NEW, error.
> 
> So the exported targets file should do something like the following ?
> 
> set(failWithError FALSE)
> cmake_policy(GET CMP00xy POLICY_SET_TO_NEW)
> if("${POLICY_SET_TO_NEW}" STREQUAL "NEW")
>    set(Foo_FOUND FALSE);
>    set(Foo_NOT_FOUND_MESSAGE "Foo not found because some target is
>    missing")
> else()
>    message(STATUS "Foo may not work because some imported target is
>                    currently still missing")
> endif()
> 

You may also want to cherry-pick 3c84b519260398adef95a0e08f268e93430ccaf9 
from my clone to get the policy warning in the cmake language.

Thanks,

Steve.





More information about the cmake-developers mailing list