<div dir="ltr"><div class="gmail_quote">On Tue, Mar 10, 2015 at 9:16 PM Chandler Carruth <<a href="mailto:chandlerc@google.com">chandlerc@google.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br></div><div dir="ltr"><div><span style="font-size:12.8000001907349px">Maybe Zach is ready to use some features. I'll let him make the case if so.</span></div></div></blockquote><div><br></div><div> I went and looked over the feature list of 3.0, 3.1, and 3.2.  Here's my thoughts.  It would be nice if someone else with a different perspective could do the same thing.</div><div><br></div><div><b>CMake 3.0</b></div><div>* The $<UPPER_CASE> and $<LOWER_CASE> generator expressions seem useful for cleaning up string comparisons.  No real other killer features I could find.</div><div><br></div><div><b>CMake 3.1</b></div><div>* A project generator for Visual Studio 2015 was added.  We don't need to require this yet, but keep this in mind for when it's time to bump the minimum MSVC version again.</div><div><span style="font-size:13.1999998092651px">* $<LINK_ONLY> </span><span style="font-size:13.1999998092651px">generator expression</span><span style="font-size:13.1999998092651px"> </span><span style="font-size:13.1999998092651px">looks useful for speeding up builds.  Right now target_link_libraries(A B) will create a dependency from A to B, so it will force A to build after B is finished.  If A and B are both static libraries and B doesn't generate code, they could build in parallel.  $<LINK_ONLY> target_link_libraries(A $<LINK_ONLY:B>) appears to solve this and allow A and B to be build in parallel.</span><br></div><div><span style="font-size:13.1999998092651px">* A new $<COMPILE_FEATURES> generator expression appears useful for cleaning up some existing CMake code we have to detect available compile features.</span></div><div><span style="font-size:13.1999998092651px"><br></span></div><div><span style="font-size:13.1999998092651px"><b>CMake 3.2</b></span></div><div><span style="font-size:13.1999998092651px">* add_custom_command(BYPRODUCTS) looks very useful for specifying outputs of custom commands.  There are a number of issues in the LLDB build (not sure about other projects) where we have a custom command which runs a python script that generates multiple outputs, and I haven't yet found a solution for how to get CMake to regenerate those items if you go and delete the byproducts.  This appears to solve that.</span></div><div><span style="font-size:13.1999998092651px">* continue() is a welcome new control flow instruction</span></div><div><span style="font-size:13.1999998092651px"><br></span></div></div></div>