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