MantisBT - CMake
View Issue Details
0014380CMakeCMakepublic2013-08-28 16:252014-01-01 12:45
David Marshall 
Alex Neundorf 
normalminoralways
closedfixed 
Apple MacOS X10.8.4
CMake 2.8.11.2 
 
0014380: Eclipse Generator for 64-Bit Mac OS X
Every time I regenerate my project file (i.e., a CMakeLists.txt file changed) the binary parser gets set to Mach-O Parser and not the Mach-0 64 Parser. What results is that eclipse won't run the code via the debugger, I get the error "Launch failed: Binary not found". To fix it I need to go to the project properties and change the parser back to the 64-bit parser.

I've tracked down the problem to cmExtraEclipseCDT4Generator.cxx line 724 (version from git). Here's the code:

    else if (systemName == "Darwin")
      {
      fout << "<extension id=\"org.eclipse.cdt.core.MachO\""
              " point=\"org.eclipse.cdt.core.BinaryParser\">\n"
              "<attribute key=\"c++filt\" value=\"c++filt\"/>\n"
              "</extension>\n"
              ;
      }

This is for the old parser that apparently is going to be removed soon (see the eclipse bug tracker discussion https://bugs.eclipse.org/bugs/show_bug.cgi?id=270790 [^]). Since version 6.0.2 the 64-bit parser has been supported and is the preferred binary parser, I believe. I don't know the best change to keep versions prior to 6.0.2 supported, but I think that the following code will set the parser to the more recent one and stop me from having to manually set the binary parser every time the eclipse project gets rebuilt:

    else if (systemName == "Darwin")
      {
      fout << "<extension id=\"org.eclipse.cdt.core.MachO64\""
              " point=\"org.eclipse.cdt.core.BinaryParser\">\n"
              "<attribute key=\"c++filt\" value=\"c++filt\"/>\n"
              "</extension>\n"
              ;
      }
To reproduce:
* Create an Eclipse project in Debug using CMake on a 64-bit Mac OS X computer
* Build the debug version of project
* Attempt to debug executable
* Error will display

Manual fix:
* Go to project properties
* Select Binary Parser tab
* Pick Mach-O 64 parser
No tags attached.
Issue History
2013-08-28 16:25David MarshallNew Issue
2013-08-29 12:00Alex NeundorfAssigned To => Alex Neundorf
2013-08-29 12:00Alex NeundorfStatusnew => assigned
2014-01-01 12:45Alex NeundorfNote Added: 0034894
2014-01-01 12:45Alex NeundorfStatusassigned => closed
2014-01-01 12:45Alex NeundorfResolutionopen => fixed

Notes
(0034894)
Alex Neundorf   
2014-01-01 12:45   
This should work now for you. If the detected Eclipse is at least Helios, the MachO64 parser is now used.
Helios is version 7 and was released in 2010, so it should be ok.
Merged via the EclipseUse64bitMachOParser branch into next.
Please give this a try (either via git or the release candidates once they are released) and reopen the ticket if it doesn't work for you.