<div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jun 28, 2012 at 9:07 AM, Jordan Rose <span dir="ltr"><<a href="mailto:jordan_rose@apple.com" target="_blank" class="cremed">jordan_rose@apple.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><br>
On Jun 28, 2012, at 6:45 AM, Bill Hoffman wrote:<br>
<br>
> On 6/28/2012 8:31 AM, Jean-Daniel Dupas wrote:<br>
>> My answer was about "CMake developers are aware of the inferior quality of the Xcode generator, but they say that there is little interest from the Xcode users."<br>
><br>
> I disagree.<br>
><br>
> The CMake devs say that it is the best that can be done with what Xcode<br>
> can do. For example in Xcode you can not have a target depend on an<br>
> arbitrary file. This makes it impossible to do some of the stuff that<br>
> CMake needs to do in order to build projects correctly. To compensate<br>
> we use custom targets that fall back to makefiles and make called form<br>
> Xcode. I don't think we are uninterested. If there were specific<br>
> complaints, and examples given in working Xcode projects we would adapt<br>
> CMake. The Xcode generator in CMake is able to build all of our test<br>
> cases and display all of the sources for the project in Xcode. It does<br>
> use make for some bits that Xcode can not do. However, I am not aware<br>
> of things that are broken.<br>
><br>
> -Bill<br>
<br>
</div>I want to stay out of this as a discusser, but I'll offer my current experience in Xcode:<br></blockquote><div><br></div><div>Thank you for chiming in! This is actionable data that I can use to make the cmake projects for LLVM and Clang better I suspect.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">One of my machines has a single Xcode project containing both LLVM and Clang; the other has two projects contained in a single workspace. The latter does not build the Clang regression tests correctly; it is printing "PASS" outputs as well as "FAIL" outputs and Xcode is treating these messages as failures.<br>
<br>
Neither project includes the regression test files by default, even though there's a target to run them. I had to add the test directory to my workspace manually.<br>
<br>
There are files missing from the generated project files: header files and tablegen files that live in lib/ instead of include/. There is little point in adding these manually to the project because any changes I make are overwritten when the projects are regenerated (which happens whenever someone touches any CMakeLists file). It would be nice if CMake tried to /merge/ project files instead of /replacing/ them, but then again I understand the difficulty of working with a closed format.<br>
<br>
This is probably a Clang issue more than a CMake issue, but I can't find an easy way to only run some tests. Probably I can set TESTDIRS in the Build Settings, but I haven't tried it yet. I can't make a separate custom target because (again) the whole project file is regenerated, not merged, when CMake sees an update.<br>
</blockquote><div><br></div><div>I think all of the points through here are only a problem due to our still very broken CMake files. I think the system is fine, and we're using it poorly. Would you care to file one (or a set of) PR(s) and assign them to me? I'm not sure when I can get to it, but I think I can actually fix all of these issues with the current system.</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">The fact that CMake uses make for "some bits that Xcode cannot do" is what prevents the Xcode dependency checking from working properly -- the link phase of pretty much /every/ target is implemented using make. It would be /very/ nice to avoid this.<br>
</blockquote><div><br></div><div>And this is I think great feedback fro the CMake folks. =]</div></div></div>