<div dir="ltr">So it took me some time to find a technique, but it turns out there is a way to get ccache working with the Xcode generator, just not through RULE_LAUNCH_COMPILE. The full article explaining how is now available here:<div><br></div><div><a href="https://crascit.com/2016/04/09/using-ccache-with-cmake/">https://crascit.com/2016/04/09/using-ccache-with-cmake/</a><br></div><div><br></div><div>The general gist of the technique is to set up your CMakeLists.txt file like this:</div><div><br></div><div><br></div><div><div class="" style="color:rgb(68,68,68);border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px 1em 0px 0em!important;vertical-align:baseline!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;line-height:1.1em!important;overflow:visible!important;width:auto!important;direction:ltr!important;white-space:pre!important"><code class="" style="border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px!important;vertical-align:baseline!important;line-height:1.1em!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;overflow:visible!important;width:auto!important;direction:ltr!important;display:inline!important;color:black!important">cmake_minimum_required(VERSION 2.8)</code></div><div class="" style="color:rgb(68,68,68);border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px 1em 0px 0em!important;vertical-align:baseline!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;line-height:1.1em!important;overflow:visible!important;width:auto!important;direction:ltr!important;white-space:pre!important"> </div><div class="" style="color:rgb(68,68,68);border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px 1em 0px 0em!important;vertical-align:baseline!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;line-height:1.1em!important;overflow:visible!important;width:auto!important;direction:ltr!important;white-space:pre!important"><code class="" style="border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px!important;vertical-align:baseline!important;line-height:1.1em!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;overflow:visible!important;width:auto!important;direction:ltr!important;display:inline!important;color:black!important">find_program(CCACHE_PROGRAM ccache)</code></div><div class="" style="color:rgb(68,68,68);border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px 1em 0px 0em!important;vertical-align:baseline!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;line-height:1.1em!important;overflow:visible!important;width:auto!important;direction:ltr!important;white-space:pre!important"><code class="" style="border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px!important;vertical-align:baseline!important;line-height:1.1em!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;overflow:visible!important;width:auto!important;direction:ltr!important;display:inline!important;color:black!important">if(CCACHE_PROGRAM)</code></div><div class="" style="color:rgb(68,68,68);border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px 1em 0px 0em!important;vertical-align:baseline!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;line-height:1.1em!important;overflow:visible!important;width:auto!important;direction:ltr!important;white-space:pre!important"><code class="" style="border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px!important;vertical-align:baseline!important;line-height:1.1em!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;overflow:visible!important;width:auto!important;direction:ltr!important;display:inline!important;color:black!important">    </code><code class="" style="border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px!important;vertical-align:baseline!important;line-height:1.1em!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;overflow:visible!important;width:auto!important;direction:ltr!important;display:inline!important;color:black!important"># Support Unix Makefiles and Ninja</code></div><div class="" style="color:rgb(68,68,68);border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px 1em 0px 0em!important;vertical-align:baseline!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;line-height:1.1em!important;overflow:visible!important;width:auto!important;direction:ltr!important;white-space:pre!important"><code class="" style="border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px!important;vertical-align:baseline!important;line-height:1.1em!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;overflow:visible!important;width:auto!important;direction:ltr!important;display:inline!important;color:black!important">    </code><code class="" style="border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px!important;vertical-align:baseline!important;line-height:1.1em!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;overflow:visible!important;width:auto!important;direction:ltr!important;display:inline!important;color:black!important">set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")</code></div><div class="" style="color:rgb(68,68,68);border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px 1em 0px 0em!important;vertical-align:baseline!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;line-height:1.1em!important;overflow:visible!important;width:auto!important;direction:ltr!important;white-space:pre!important"><code class="" style="border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px!important;vertical-align:baseline!important;line-height:1.1em!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;overflow:visible!important;width:auto!important;direction:ltr!important;display:inline!important;color:black!important">endif()</code></div><div class="" style="color:rgb(68,68,68);border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px 1em 0px 0em!important;vertical-align:baseline!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;line-height:1.1em!important;overflow:visible!important;width:auto!important;direction:ltr!important;white-space:pre!important"> </div><div class="" style="color:rgb(68,68,68);border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px 1em 0px 0em!important;vertical-align:baseline!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;line-height:1.1em!important;overflow:visible!important;width:auto!important;direction:ltr!important;white-space:pre!important"><code class="" style="border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px!important;vertical-align:baseline!important;line-height:1.1em!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;overflow:visible!important;width:auto!important;direction:ltr!important;display:inline!important;color:black!important">project(SomeProject)</code></div><div class="" style="color:rgb(68,68,68);border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px 1em 0px 0em!important;vertical-align:baseline!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;line-height:1.1em!important;overflow:visible!important;width:auto!important;direction:ltr!important;white-space:pre!important"> </div><div class="" style="color:rgb(68,68,68);border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px 1em 0px 0em!important;vertical-align:baseline!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;line-height:1.1em!important;overflow:visible!important;width:auto!important;direction:ltr!important;white-space:pre!important"><code class="" style="border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px!important;vertical-align:baseline!important;line-height:1.1em!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;overflow:visible!important;width:auto!important;direction:ltr!important;display:inline!important;color:black!important">if(CCACHE_PROGRAM AND CMAKE_GENERATOR STREQUAL "Xcode")</code></div><div class="" style="color:rgb(68,68,68);border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px 1em 0px 0em!important;vertical-align:baseline!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;line-height:1.1em!important;overflow:visible!important;width:auto!important;direction:ltr!important;white-space:pre!important"><code class="" style="border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px!important;vertical-align:baseline!important;line-height:1.1em!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;overflow:visible!important;width:auto!important;direction:ltr!important;display:inline!important;color:black!important">    </code><code class="" style="border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px!important;vertical-align:baseline!important;line-height:1.1em!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;overflow:visible!important;width:auto!important;direction:ltr!important;display:inline!important;color:black!important"># Set up wrapper scripts</code></div><div class="" style="color:rgb(68,68,68);border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px 1em 0px 0em!important;vertical-align:baseline!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;line-height:1.1em!important;overflow:visible!important;width:auto!important;direction:ltr!important;white-space:pre!important"><code class="" style="border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px!important;vertical-align:baseline!important;line-height:1.1em!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;overflow:visible!important;width:auto!important;direction:ltr!important;display:inline!important;color:black!important">    </code><code class="" style="border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px!important;vertical-align:baseline!important;line-height:1.1em!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;overflow:visible!important;width:auto!important;direction:ltr!important;display:inline!important;color:black!important">configure_file(<a href="http://ccache-c.in">ccache-c.in</a>   ccache-c)</code></div><div class="" style="color:rgb(68,68,68);border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px 1em 0px 0em!important;vertical-align:baseline!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;line-height:1.1em!important;overflow:visible!important;width:auto!important;direction:ltr!important;white-space:pre!important"><code class="" style="border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px!important;vertical-align:baseline!important;line-height:1.1em!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;overflow:visible!important;width:auto!important;direction:ltr!important;display:inline!important;color:black!important">    </code><code class="" style="border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px!important;vertical-align:baseline!important;line-height:1.1em!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;overflow:visible!important;width:auto!important;direction:ltr!important;display:inline!important;color:black!important">configure_file(<a href="http://ccache-cxx.in">ccache-cxx.in</a> ccache-cxx)</code></div><div class="" style="color:rgb(68,68,68);border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px 1em 0px 0em!important;vertical-align:baseline!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;line-height:1.1em!important;overflow:visible!important;width:auto!important;direction:ltr!important;white-space:pre!important"><code class="" style="border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px!important;vertical-align:baseline!important;line-height:1.1em!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;overflow:visible!important;width:auto!important;direction:ltr!important;display:inline!important;color:black!important">    </code><code class="" style="border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px!important;vertical-align:baseline!important;line-height:1.1em!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;overflow:visible!important;width:auto!important;direction:ltr!important;display:inline!important;color:black!important">execute_process(COMMAND chmod a+rx "${CMAKE_BINARY_DIR}/ccache-c" "${CMAKE_BINARY_DIR}/ccache-cxx")</code></div><div class="" style="color:rgb(68,68,68);border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px 1em 0px 0em!important;vertical-align:baseline!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;line-height:1.1em!important;overflow:visible!important;width:auto!important;direction:ltr!important;white-space:pre!important"><code class="" style="border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px!important;vertical-align:baseline!important;line-height:1.1em!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;overflow:visible!important;width:auto!important;direction:ltr!important;display:inline!important;color:black!important">    </code> </div><div class="" style="color:rgb(68,68,68);border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px 1em 0px 0em!important;vertical-align:baseline!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;line-height:1.1em!important;overflow:visible!important;width:auto!important;direction:ltr!important;white-space:pre!important"><code class="" style="border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px!important;vertical-align:baseline!important;line-height:1.1em!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;overflow:visible!important;width:auto!important;direction:ltr!important;display:inline!important;color:black!important">    </code><code class="" style="border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px!important;vertical-align:baseline!important;line-height:1.1em!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;overflow:visible!important;width:auto!important;direction:ltr!important;display:inline!important;color:black!important"># Set Xcode project attributes to route compilation through our scripts</code></div><div class="" style="color:rgb(68,68,68);border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px 1em 0px 0em!important;vertical-align:baseline!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;line-height:1.1em!important;overflow:visible!important;width:auto!important;direction:ltr!important;white-space:pre!important"><code class="" style="border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px!important;vertical-align:baseline!important;line-height:1.1em!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;overflow:visible!important;width:auto!important;direction:ltr!important;display:inline!important;color:black!important">    </code><code class="" style="border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px!important;vertical-align:baseline!important;line-height:1.1em!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;overflow:visible!important;width:auto!important;direction:ltr!important;display:inline!important;color:black!important">set(CMAKE_XCODE_ATTRIBUTE_CC  "${CMAKE_BINARY_DIR}/ccache-c")</code></div><div class="" style="color:rgb(68,68,68);border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px 1em 0px 0em!important;vertical-align:baseline!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;line-height:1.1em!important;overflow:visible!important;width:auto!important;direction:ltr!important;white-space:pre!important"><code class="" style="border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px!important;vertical-align:baseline!important;line-height:1.1em!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;overflow:visible!important;width:auto!important;direction:ltr!important;display:inline!important;color:black!important">    </code><code class="" style="border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px!important;vertical-align:baseline!important;line-height:1.1em!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;overflow:visible!important;width:auto!important;direction:ltr!important;display:inline!important;color:black!important">set(CMAKE_XCODE_ATTRIBUTE_CXX "${CMAKE_BINARY_DIR}/ccache-cxx")</code></div><div class="" style="color:rgb(68,68,68);border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px 1em 0px 0em!important;vertical-align:baseline!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;line-height:1.1em!important;overflow:visible!important;width:auto!important;direction:ltr!important;white-space:pre!important"><code class="" style="border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px!important;vertical-align:baseline!important;line-height:1.1em!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;overflow:visible!important;width:auto!important;direction:ltr!important;display:inline!important;color:black!important">endif()</code></div></div><div class="" style="color:rgb(68,68,68);border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px 1em 0px 0em!important;vertical-align:baseline!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;line-height:1.1em!important;overflow:visible!important;width:auto!important;direction:ltr!important;white-space:pre!important"><code class="" style="border:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;margin:0px!important;outline:0px!important;padding:0px!important;vertical-align:baseline!important;line-height:1.1em!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;height:auto!important;overflow:visible!important;width:auto!important;direction:ltr!important;display:inline!important;color:black!important"><br></code></div><div>The two helper scripts <a href="http://ccache-c.in">ccache-c.in</a> and <a href="http://ccache-cxx.in">ccache-cxx.in</a> look like this:</div><br><i><a href="http://ccache-c.in">ccache-c.in</a>:</i><br><br><font face="monospace, monospace">#!/bin/sh<br>export CCACHE_CPP2=true<br>exec "${CCACHE_PROGRAM}" "${CMAKE_C_COMPILER}" "$@"<br></font><br><i><a href="http://ccache-cxx.in">ccache-cxx.in</a>:</i><br><br><font face="monospace, monospace">#!/bin/sh<br>export CCACHE_CPP2=true<br>exec "${CCACHE_PROGRAM}" "${CMAKE_CXX_COMPILER}" "$@"</font><div><br></div><div>The above gives full ccache support for Unix Makefiles, Ninja and Xcode, with graceful fallback to normal non-ccache use where ccache is not available or supported by the developer's current version of CMake. My question now is, given that the above seems to highlight an avenue for Xcode projects, can CMake's support for RULE_LAUNCH_COMPILE be enhanced to support the Xcode generator too by populating the CC and CXX user-defined Xcode project settings? That would be a nice improvement to CMake for developers working on Apple platforms.</div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Feb 2, 2016 at 7:03 AM, Gregor Jasny <span dir="ltr"><<a href="mailto:gjasny@googlemail.com" target="_blank">gjasny@googlemail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello,<br>
<span class=""><br>
On 01/02/16 04:52, Craig Scott wrote:<br>
> After a bit of experimenting, it seems that getting ccache working with the<br>
> Xcode generator isn't so straightforward. For Ninja and Unix Makefiles, the<br>
> RULE_LAUNCH_COMPILE global property nicely gives us the behaviour we want,<br>
> but this doesn't work for Xcode. Under the constraint that we can't modify<br>
> the build machines (meaning we can't assume ccache symlinks have been set<br>
> up for the clang compiler set), is there a way to coax CMake to use ccache<br>
> with Xcode? I know I could write a wrapper script to explicitly invoke<br>
> ccache, but this seems like something CMake should be able to do without<br>
> having to resort to that. Any suggestions?<br>
<br>
</span>I guess you will have to modify the SDK within Xcode to be able to<br>
override the compiler for the SDK.<br>
<br>
As far as I remember Bullseye has the same problem to solve:<br>
<a href="http://www.bullseye.com/help/tool-xcode.html" rel="noreferrer" target="_blank">http://www.bullseye.com/help/tool-xcode.html</a><br>
Maybe you can have a look there.<br>
<br>
Thanks,<br>
Gregor<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr">Craig Scott<br><div>Melbourne, Australia</div><div><a href="http://crascit.com" target="_blank">http://crascit.com</a><br></div></div></div></div></div>
</div>