/core/externals/google-toolbox-for-mac/XcodeConfig/xcconfigs-readme.txt

http://macfuse.googlecode.com/ · Plain Text · 57 lines · 47 code · 10 blank · 0 comment · 0 complexity · 2d30f072711513f1689f197823b95e65 MD5 · raw file

  1. Xcode Configs are sort of a black art, any time you have a set of rules, you
  2. quickly hit a few exceptions.
  3. The main goal of using these is as follow:
  4. Edit your Project level build settings by removing as much as possible, and
  5. then set the per Configuration settings to one of the project xcode config
  6. files w/in the Project subfolder here. Apple now recommends always building
  7. with the "current" SDK and started being more aggressive at removing older
  8. SDKs with each Xcode releases. So set you SDK version and min supported OS
  9. version in your project. The configs will then set everything based off
  10. those choices.
  11. If you are building a Shared Library, Loadable Bundle (Framework) or UnitTest
  12. you will need to apply a further Xcode Config file at the target level. You do
  13. this again by clearing most of the settings on the target, and just setting the
  14. build config for that target to be the match from the Target subfolder here.
  15. To see an example of this, look at CoverStory
  16. (http://code.google.com/p/coverstory) or Vidnik
  17. (http://code.google.com/p/vidnik).
  18. The common exception...If you need to have a few targets build w/ different
  19. SDKs, then you hit the most common of the exceptions. For these, you'd need
  20. the top level config not to set some things, the simplest way to do this seems
  21. to be to remove as many of the settings from the project file, and make new
  22. wrapper xcconfig files that inclue both the project level and target level
  23. setting and set them on the targets (yes, this is like the MetroWerks days
  24. where you can quickly explode in a what seems like N^2 (or worse) number of
  25. config files. With a little luck, future versions of Xcode might have some
  26. support to make mixing SDKs easier.
  27. Remember: When using the configs at any given layer, make sure you set them for
  28. each build configuration you need (not just the active one).
  29. Many of the build settings are more than just yes/no flags and take
  30. a list of values that you may want to change at different levels.
  31. Xcode doesn't allow you to "inherit" settings with includes so you always
  32. end up overriding settings accidentally. To avoid this, we instead
  33. allow you to define settings at different levels
  34. (GENERAL, PLATFORM (iPhone/Mac), CONFIGURATION (Release/Debug).
  35. We do this by setting a GTM version of the setting (so for OTHER_CFLAGS it's
  36. GTM_XXX_OTHER_CFLAGS where xxx is GENERAL, PLATFORM or CONFIGURATION depending
  37. at what level the flag is set. These are all merged together in the
  38. GTMMerge.xcconfig. Do not modify the base setting (OTHER_CFLAGS) instead modify
  39. the GTM one at the level you want it modified.
  40. The major place this may affect you is that we have really tightened down on
  41. the warnings. To make it easier for you to move your code onto the new
  42. xcconfig files, we have split the warnings up into three categories, which in
  43. general you can think of as easy, moderate and extreme. If you run into a lot
  44. of warnings when you compile, look at changing the GTM_GENERAL_WARNING_CFLAGS
  45. setting to only include lower levels (eg GTM_GENERAL_WARNING_CFLAGS1) and see
  46. if that makes it easier on you. Look inside General.xcconfig and search for
  47. GTM_GENERAL_WARNING_CFLAGS1 for more info.