Skip to content
  • Stephen Kelly's avatar
    Create make rules for INTERFACE_LIBRARY targets. · b04f3b9a
    Stephen Kelly authored and Brad King's avatar Brad King committed
    The result is that the depends of the target are created.
    
    So,
    
     add_library(somelib foo.cpp)
     add_library(anotherlib EXCLUDE_FROM_ALL foo.cpp)
     add_library(extra EXCLUDE_FROM_ALL foo.cpp)
     target_link_libraries(anotherlib extra)
    
     add_library(iface INTERFACE)
     target_link_libraries(iface INTERFACE anotherlib)
    
    Executing 'make iface' will result in the anotherlib and extra targets
    being made.
    
    Adding a regular executable to the INTERFACE of an INTERFACE_LIBRARY
    will not result in the executable being built with 'make iface' because
    of the logic in cmComputeTargetDepends::AddTargetDepend.
    
    So far, this is implemented only for the Makefile generator. Other
    generators will follow if this feature is possible for them.
    
    Make INTERFACE_LIBRARY targets part of the all target by default.
    Test this by building the all target and making the expected library
    EXCLUDE_FROM_ALL.
    b04f3b9a