Skip to content
  • Stephen Kelly's avatar
    Qt4Macros: Allow specifying a TARGET in invokations of macros. · 9ce60ff5
    Stephen Kelly authored
    That will allow things like this:
    
     find_package(Qt4)
    
     qt4_generate_moc(myfile.h moc_myfile.cpp TARGET foo) # Note, foo target doesn't
                                                          # exist until below.
    
     add_library(foo ...)
    
    The qt4_generate_moc call would use the INCLUDE_DIRECTORIES from
    the foo target using generator expressions. Currently it reads
    the INCLUDE_DIRECTORIES directory property, meaning that include_directories()
    is required.
    
    Support for the TARGET is also added to qt4_wrap_cpp, but not qt4_automoc,
    as that is deprecated in favor of the AUTOMOC target property.
    
    The moc tool reports failure if the Q_INTERFACES macro is used with
    an argument which has not appeared with Q_DECLARE_INTERFACE, so that is
    the basis of the unit test.
    
    The command line arguments are now always written to a file, which is
    passed to moc as the @atfile. This was already the case on Windows, but
    now it is used everywhere. The reason for that is that it is not currently
    possible to expand the list of includes from a target directly in
    a add_custom_command invokation (though that may become possible in the
    future). There is not a big disadvantage to using the file anyway on
    unix, so having one code path instead of two is also a motivation.
    9ce60ff5