Skip to content
  • Stephen Kelly's avatar
    GenEx: Add expressions to specify build- or install-only values · b2f1700b
    Stephen Kelly authored
    This is for specifying INCLUDE_DIRECTORIES relevant to the build-location
    or the install location for example:
    
     set_property(TARGET foo PROPERTY
       INTERFACE_INCLUDE_DIRECTORIES
       "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR};${CMAKE_CURRENT_SOURCE_DIR}>"
       "$<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include>"
     )
    
    A 'bar' target can then use:
    
     set_property(TARGET bar PROPERTY
       INCLUDE_DIRECTORIES
       "$<TARGET_PROPERTY:foo,INTERFACE_INCLUDE_DIRECTORIES>"
     )
    
    and it will work whether foo is in the same project, or an imported target
    from an installation location, or an imported target from a build location
    generated by the export() command.
    
    Because the generator expressions are only evaluated at build-time, these
    new expressions are equivalent to the ZeroNode and OneNode.
    
    The GeneratorExpression test is split into parts. Some shells can't run
    the custom command as it is getting too long.
    b2f1700b