[CMake] Chasing up: XCode 3.2.4 and CMake 2.8.2, setting GCC version to 4.0

John Clayton johnc at filewave.com
Tue Jan 4 09:59:14 EST 2011


I have a solution for the problem of creating XCode 3.2.x project on a 10.6 machine that are to target the 10.4u SDK.

Here's what I did (thanks to the OGRE and Open Scene Graph projects - which exposed me to this solution). 

WARNING: my solution assumes a 32 bit build, so here goes:

Here's how: put this right at the top of the CMakeLists.txt - in my case, the very top level one. 

if (APPLE)
  # Force gcc <= 4.0 on Mac OS X because 4.2 is not supported prior to Mac OS X 10.5
  include(CMakeForceCompiler)
  CMAKE_FORCE_C_COMPILER(gcc-4.0 GNU)
  CMAKE_FORCE_CXX_COMPILER(g++-4.0 GNU)
  SET(CMAKE_SIZEOF_VOID_P 4)
endif ()

set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "4.0")


so, what's it do??

the FORCE_C_COMPILER stuff is going to ensure that the 4.0 series GCC compiler is picked up, which is really useful when the compiler-test phases of cmake get run.  What isn't obvious though is that when this is done, some tests the ptr size are NOT carried out any longer, which impacted our project - so here's the caveat: I'm forcing the CMAKE_SIZEOF_VOID_P to 4, which means the rest of our codebase goes with a 32 bit build.  For me, not a problem - for you - good luck :-)

The CMAKE_XCODE_ATTRIBUTE_GCC_VERSION is *also* required.  This forces the GCC_VERSION attribute within the xcode configuration to be 4.0 instead of 4.2 (assuming build platform of 10.6).  

Take note; if you leave the CMAKE_XCODE_ATTRIBUTE_GCC_VERSION out - then the Xcode GCC version will *still be 4.2* - so you need both of these settings in the CMakeLists.txt file.

If anyone can improve on this - I'd appreciate it, thanks for all your help and good luck with those 10.4u builds from a 10.6.x machine!





John Clayton

---------------------------
FileWave (Europe) GmbH
St. Gallerstrasse 1
CH - 9500 Wil
 
Phone: +41 71 914 30 80
Fax: +41 71 914 30 81
Web: www.filewave.com
Skype: johncclayton




On 03.01.2011, at 14:36, John Clayton wrote:

> Hi All,
> 
> i'm still having problems getting the CMAKE_XCODE_ATTRIBUTE_GCC_VERSION flag to properly force the compiler version I want to use for my project. 
> 
> I'm using XCode 3.2.5, on a Mac 10.6.3 machine - trying to target a Max OS X Tiger 10.4u build.  I get compiler errors because the gcc-4.2 compiler is being used in the compiler-test stage of CMake. 
> 
> I thought CMAKE_XCODE_ATTRIBUTE_GCC_VERSION could be used to force the compiler setting to 4.0?
> 
> My top level CMakeLists.txt file has this as its first few lines - is this the correct way to use this option? 
> 
> 	PROJECT( FileWave )
> 	cmake_minimum_required(VERSION 2.6)
> 	set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "4.0")
> 
> The error I get after running an XCode based generator is: 
> -- The C compiler identification is GNU
> -- The CXX compiler identification is GNU
> -- Checking whether C compiler has -isysroot
> -- Checking whether C compiler has -isysroot - yes
> -- Checking whether C compiler supports OSX deployment target flag
> -- Checking whether C compiler supports OSX deployment target flag - yes
> -- Check for working C compiler using: Xcode
> -- Check for working C compiler using: Xcode -- broken
> CMake Error at /Users/john/CMake/Modules/CMakeTestCCompiler.cmake:52 (MESSAGE):
>   The C compiler "/usr/bin/gcc-4.0" is not able to compile a simple test
>   program.
> 
>   It fails with the following output:
> 
>    Change Dir: /Users/john/src/TRUNK/BuildSystem/Xcode/CMakeFiles/CMakeTmp
> 
>   
> 
>   Run Build Command:/Users/john/CMake/bin/cmakexbuild -project
>   CMAKE_TRY_COMPILE.xcodeproj build -target cmTryCompileExec -configuration
>   Debug
> 
>   
> 
>   === BUILD NATIVE TARGET cmTryCompileExec OF PROJECT CMAKE_TRY_COMPILE WITH
>   CONFIGURATION Debug ===
> 
>   Check dependencies
> 
>   GCC 4.2 is not compatible with the Mac OS X 10.4 SDK (file testCCompiler.c)
> 
>   GCC 4.2 is not compatible with the Mac OS X 10.4 SDK (file testCCompiler.c)
> 
>   ** BUILD FAILED **
> 
>   
> 
> 
> <pastedGraphic.tiff>
> 
> 
> 
> John Clayton
> 
> ---------------------------
> FileWave (Europe) GmbH
> St. Gallerstrasse 1
> CH - 9500 Wil
>  
> Phone: +41 71 914 30 80
> Fax: +41 71 914 30 81
> Web: www.filewave.com
> Skype: johncclayton
> 
> 
> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20110104/d2ab3447/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pastedGraphic.tiff
Type: image/tiff
Size: 17484 bytes
Desc: not available
URL: <http://www.cmake.org/pipermail/cmake/attachments/20110104/d2ab3447/attachment-0001.tiff>


More information about the CMake mailing list