Hi there, I've pushed the tll-includes-defines topic to my clone again, rebased to master.
It allows the removal a lot of redundant use of target_include_directories and target_compile_definitions. I think the real value of the whole feature will only come when all usage requirements can be set by connecting targets together one time with one command, be that with tll() or with target_use_interfaces(). One reason I think tll() should be used for that is that it has the implication that can be documented and easily understood - namely that cmake requirements usage is based on linking targets together. Linking correctly requires having compiled correctly, and compiling correctly depends on having used the correct include directories and compile definitions as specified by upstream, as well as a few other things such as use of -fPIC. Currently in cmake master, the -fPIC compile flag may be added depending on what targets are used in tll() calls, but the compile definitions and the include directories are not. As linking correctly depends on compiling correctly as specified by upstream, it seems natural to ensure that compiling correctly is possible as a result of target_link_libraries calls. As far as I understand, the only objection is to the idea that target_link_libraries would be doing something other than linking, and it might not be obvious. It is currently used for -fPIC, so I'm not so sure. Also, the objection is not that people would have to learn or discover, in documentation or otherwise, that target_link_libraries could have an effect other than linking. The objection instead is that, even long term and for experienced people, reading a line of code that contains a target_link_libraries call alone would not inform them of whether it is 'only' linking or whether it has other affects. This also seems funny to me. Given a line containing target_use_interfaces(foo PRIVATE bar), it is impossible to know from reading alone whether foo INCLUDE_DIRECTORIES, COMPILE_DEFINITIONS, LINK_LIBRARIES, or all three, are affected by the line. In both cases, the way to know is to use -DCMAKE_DEBUG_TARGET_PROPERTIES=INCLUDE_DIRECTORIES or similar. Also feel free to respond to any parts of http://thread.gmane.org/gmane.comp.programming.tools.cmake.devel/5526/focus=5710 which are not obviously already addressed. Thanks, Steve. -- 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