CMakeLists.txt 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. cmake_minimum_required(VERSION 2.8)
  2. project(Architecture C)
  3. function(test_for_xcode4 result_var)
  4. set(${result_var} 0 PARENT_SCOPE)
  5. if(APPLE)
  6. execute_process(COMMAND xcodebuild -version
  7. OUTPUT_VARIABLE ov RESULT_VARIABLE rv
  8. )
  9. if("${rv}" STREQUAL "0" AND ov MATCHES "^Xcode ([0-9]+)\\.")
  10. if(NOT CMAKE_MATCH_1 VERSION_LESS 4)
  11. set(${result_var} 1 PARENT_SCOPE)
  12. endif()
  13. endif()
  14. endif()
  15. endfunction()
  16. test_for_xcode4(is_xcode4)
  17. set(arch0 i386)
  18. set(arch1 ppc)
  19. if(is_xcode4)
  20. # Xcode 4, use modern architectures as defaults
  21. # Arch 'ppc' no longer works: tools no longer available starting with Xcode 4
  22. set(arch0 i386)
  23. set(arch1 x86_64)
  24. endif()
  25. add_library(foo foo.c)
  26. if(CMAKE_OSX_ARCHITECTURES)
  27. get_property(archs TARGET foo PROPERTY OSX_ARCHITECTURES)
  28. if(NOT "${CMAKE_OSX_ARCHITECTURES}" STREQUAL "${archs}")
  29. message(FATAL_ERROR
  30. "OSX_ARCHITECTURES property not initialized by CMAKE_OSX_ARCHITECTURES.\n"
  31. "Expected [${CMAKE_OSX_ARCHITECTURES}], got [${archs}]."
  32. )
  33. endif()
  34. list(LENGTH archs archs_len)
  35. if(archs_len GREATER 1)
  36. list(GET archs 0 arch0)
  37. list(GET archs 1 arch1)
  38. endif()
  39. endif()
  40. message("is_xcode4='${is_xcode4}'")
  41. message("archs='${archs}'")
  42. message("arch0='${arch0}'")
  43. message("arch1='${arch1}'")
  44. set_property(TARGET foo PROPERTY OSX_ARCHITECTURES ${arch0})
  45. set_property(TARGET foo PROPERTY OSX_ARCHITECTURES_DEBUG ${arch1})
  46. add_executable(bar bar.c)
  47. target_link_libraries(bar foo)
  48. set_property(TARGET bar PROPERTY OUTPUT_NAME Architecture)
  49. set_property(TARGET bar PROPERTY OSX_ARCHITECTURES ${arch1})
  50. set_property(TARGET bar PROPERTY OSX_ARCHITECTURES_DEBUG ${arch0})