On 01/31/2013 05:34 AM, Stephen Kelly wrote:
> I've left it in on export because it might make sense to use it with 
> generator expressions even on export:
> 
>  set(lib_genex $<$<CONFIG:Debug>:debuglib>)
>  tll(tgt $<TARGET_DEFINED:${lib_genex}:$<TARGET_PROPERTY:${lib_genex},FOO>)

Okay.  As long as $<LINKED:...> is removed for non-targets then this won't
be an issue.  I see your branch does this already :)

> I've made the LINKED generator expression a first-class expression, not just 
> something to be preprocessed away. I think this addresses much of the cost 
> concern.

Nice!  Here are a few comments:

* I got a warning while building your branch:

 .../Source/cmExportFileGenerator.cxx: In member function ‘void 
cmExportFileGenerator::ResolveTargetsInGeneratorExpression(std::string&, 
cmTarget*, std::vector<std::basic_string<char> >&)’:
 .../Source/cmExportFileGenerator.cxx:425:12: warning: unused variable ‘error’ 
[-Wunused-variable]

* I think $<LINKED:...> can be removed completely on export.  If the
  item is not a target then remove it (already done in your impl).
  If it is a target then replace it with the appropriate
  $<TARGET_PROPERTY:...,...> reference in the export.  This way the
  $<LINKED:...> expression lives only as long as needed.

* We could document $<LINKED:...> it as an internal implementation
  detail subject to future changes.  It should never be written by
  a project, only by tll.  It is transformed properly on export.
  I'd like to leave room for an alternative solution to out-of-order
  target interfaces in the future.

* Can the INCLUDE_DIRETORIES and COMPILE_DEFINITIONS property avoid
  $<LINKED:foo> references if foo is linked more than once?  Skip
  appending it if the same reference already exists earlier.  In
  the BEFORE case, prepend it and remove later instances.

Thanks,
-Brad
--

Powered by www.kitware.com

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

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

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

Reply via email to