On Jan 9, 2008 9:23 PM, Bill Hoffman <[EMAIL PROTECTED]> wrote:
> David Thulson wrote:
> > Hello,
> >   This is my first post to the cmake mailing list, so I hope it
> > works...  I downloaded the 2.4.8 RC 11 for OS X and for what it is worth
> > it appears to work just as well as 2.4.7.  In both 2.4.7 and 2.4.8 RC 11
> > I have some serious issues with the Xcode generator.  I just bought my
> > first Mac (MacBook Pro running Leopard) a few months ago, so I am
> > unfamiliar with Xcode and even OS X in general.  However, my project (
> > http://www.crownandcutlass.com) has a unit test framework that has
> > worked well for us on several versions and distributions of Linux as
> > well as Windows XP.  The project is set up as a static library and the
> > unit test framework is a separate CMake project that uses that library.
> > Code compiled in OS X using the Makefile generator appears to work
> > fine.  I still have a few quirks to work out for OS X, but overall it is
> > very much as I expected.
> >
> >   However, if I use the Xcode generator, I have several issues.  FIrst
> > off, we have a "config.cpp.in <http://config.cpp.in>" file that is used
>
> > to generate "config.cpp" as a part of the build.  The Xcode project
> > includes a reference to a file " config.cpp.rule" which does not exist.
> > That generates this warning:
> > warning: no rule to process file '/(my
> > path)/Protocce/src/config.cpp.rule' of type file for architecture i386
> >
> >   I can just remove that from the project and it seems to be fine until
> > next time I regenerate the project.  No big deal, but it is a little
> > annoying.  The bigger issue is that the resulting binary has issues
> > catching exceptions.  Some units can catch exceptions fine, but others
> > cannot at all.  At first, I thought I was having issues due to the
> > visibility flags, but I am using a static lib and I believe the
> > visibility issues only apply to dynamic libs.  The exceptions that I
> > cannot catch pass through a "catch(...)" so I believe even with
> > visibility issues that at least should catch the exception.
> >
> >   You can see my CMakeFiles here:
> > Static lib -
> > http://crownandcutlass.svn.sourceforge.net/viewvc/crownandcutlass/trunk/Protocce/src/CMakeLists.txt?revision=1020&view=markup&pathrev=1027
> > <http://crownandcutlass.svn.sourceforge.net/viewvc/crownandcutlass/trunk/Protocce/src/CMakeLists.txt?revision=1020&view=markup&pathrev=1027>
> > Unit test app -
> > http://crownandcutlass.svn.sourceforge.net/viewvc/crownandcutlass/trunk/Protocce/test/src/CMakeLists.txt?revision=1020&view=markup&pathrev=1027
> > <http://crownandcutlass.svn.sourceforge.net/viewvc/crownandcutlass/trunk/Protocce/test/src/CMakeLists.txt?revision=1020&view=markup&pathrev=1027>
> >
> >   Like I said, the same code base works fine in XP, LInux, and if I use
> > the Makefiles it works in OS X.  I may just be doing something stupid.
> > This is my first CMake project, and like I said I just got a Mac so I
> > have never used Xcode outside of this attempt.  I am not sure this is
> > worth delaying 2.4.8 since the behavior is the same as 2.4.7.  Also, I
> > have not had time to try building a new CMake binary from CVS, sorry.
> > However, I thought I should report what I'm experiencing before too much
> > longer.  Let me know what I can do to help.
> >
>
> Sounds like flag differences.   You should do a make VERBOSE=1 with the
> makefile, then use cmakexbuild to build the project file.  Find a common
> .cxx file being compiled by both, and compare the compile lines.   You
> can post the compile lines to the list, and I might be able to help.
> Either way it is not a regression in RC 11 but perhaps a new bug.
>
> -Bill
>

Here are some example build lines.  Using Xcode:

CompileC ProtocceTest.build/Debug/Test.build/Objects-normal/i386/EventTest.o
/Users/davidthulson/Documents/Code/crownandcutlass/trunk/Protocce/test/src/EventTest.cpp
normal i386 c++ com.apple.compilers.gcc.4_0
    cd 
/Users/davidthulson/Documents/Code/crownandcutlass/trunk/Protocce/test/bin/osx
    /Developer/usr/bin/gcc-4.0 -x c++ -arch i386 -pipe -Wno-trigraphs
-fpascal-strings -fasm-blocks -O0 -mdynamic-no-pic
-DCMAKE_INTDIR="Debug" -fmessage-length=0 -gdwarf-2 -Wmost
-Wno-four-char-constants -Wno-unknown-pragmas -O0
-F/Users/davidthulson/Documents/Code/crownandcutlass/trunk/Protocce/test/bin/osx/Debug
-F/Library/Frameworks -F/Users/davidthulson/OgreSDK/Dependencies
-F/Users/davidthulson/OISv1_0_Mac_SDK -F/System/Library/Frameworks
-I/Users/davidthulson/Documents/Code/crownandcutlass/trunk/Protocce/test/bin/osx/Debug/include
-I/Users/davidthulson/Documents/Code/crownandcutlass/trunk/Protocce/test/src/../../include
-I/Users/davidthulson/Documents/Code/crownandcutlass/trunk/Protocce/test/src/../include
-I/usr/local/include/boost-1_34_1
-I/System/Library/Frameworks/OpenAL.framework/Headers
-I/Users/davidthulson/OgreSDK/Dependencies/Ogre.framework/Headers
-I/Users/davidthulson/OISv1_0_Mac_SDK/OIS.framework/Headers
-I/Users/davidthulson/OgreSDK/Dependencies/CEGUI.framework/Headers
-I/Users/davidthulson/Documents/Code/crownandcutlass/trunk/Protocce/test/bin/osx/ProtocceTest.build/Debug/Test.build/DerivedSources
-c 
/Users/davidthulson/Documents/Code/crownandcutlass/trunk/Protocce/test/src/EventTest.cpp
-o 
/Users/davidthulson/Documents/Code/crownandcutlass/trunk/Protocce/test/bin/osx/ProtocceTest.build/Debug/Test.build/Objects-normal/i386/EventTest.o


Using Makefiles:

/usr/bin/c++   -g
-I/Users/davidthulson/Documents/Code/crownandcutlass/trunk/Protocce/test/src/../../include
-I/Users/davidthulson/Documents/Code/crownandcutlass/trunk/Protocce/test/src/../include
-I/usr/local/include/boost-1_34_1
-I/System/Library/Frameworks/OpenAL.framework/Headers
-F/Library/Frameworks
-I/Users/davidthulson/OgreSDK/Dependencies/Ogre.framework/Headers
-I/Users/davidthulson/OISv1_0_Mac_SDK/OIS.framework/Headers
-I/Users/davidthulson/OgreSDK/Dependencies/CEGUI.framework/Headers
-F/Users/davidthulson/OgreSDK/Dependencies
-F/Users/davidthulson/OISv1_0_Mac_SDK -F/System/Library/Frameworks  -o
CMakeFiles/Test.dir/EventTest.o -c
/Users/davidthulson/Documents/Code/crownandcutlass/trunk/Protocce/test/src/EventTest.cpp


  I am surprised at how different those are, I guess I naively assumed
that the Xcode build itself would match the Makefile build exactly
since it is the same compiler on the same system.  I see that they are
using compilers from different locations, though.  The "-v" output is
the same, but diff tells me the binary files differ.  The
"-mdynamic-no-pic" also seem interesting.  From what the man page says
it sounds like that matters for shared libs but I am unsure if it
matters for static libs.  When the test framework application is
linked using Makefiles, it uses "-fPIC" but I do not see that in the
Xcode link line.   It seems odd that "-fpascal-strings" would be
included, but again from the man page it sounds like that allows for
additional functionality but may not change default string behavior.
I'm not sure though.  I have full build logs from both the static lib
and unit test application using Xcode projects and Makefiles.  I could
send those if anyone is interested.  Let me know if you want the full
logs or if anything jumps out at you.  Thanks for the help.

David Thulson
_______________________________________________
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to