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