16

With Xcode 5.1 Apple has made $(ARCHS_STANDARD) include arm64. If your project does not support arm64 you can simply change the architecture build setting to $(ARCHS_STANDARD_32_BIT) and it will not build arm64.

However if you have a target dependency that uses $(ARCHS_STANDARD) it will build arm64 and you will get an error because your project is expecting symbols that are not arm64.

Is there a way to make your target dependency aware what you are building against so it will build the valid architecture?

Reid Main
  • 3,394
  • 3
  • 25
  • 42

1 Answers1

9

Our quick fix was to leave the Architectures entry as $(ARCHS_STANDARD) but change Valid Architectures to armv7 and armv7s until the third party libraries we're using are updated.

Cameron
  • 1,142
  • 8
  • 32
  • Do you mean you changed the Valid Architectures of your dependencies or the iOS project? I tried changing the Valid Architectures setting to armv7, armv7s but it looks like the target dependencies still build arm64. – Reid Main Mar 11 '14 at 17:27
  • 1
    In my Project Build Settings, the Architectures are $(ARCHS_STANDARD), and the Valid Architectures are armv7 and armv7s. My targets are the same. I also have Build Active Architectures Only set to NO. Our third-party libraries are closed-source, so we have to wait on them to ship the arm64 versions whenever they get around to it. If you have any other included projects in your workspace, you may need to update the settings accordingly. – Cameron Mar 11 '14 at 17:40
  • Yeah we include like six and ideally I wouldn't have to go fork them just to set their project settings to not build arm64. It seems strange that this is not a simple setting because if some third party gave you a arm64 bit compatible library and your project was only 32 bit you'd be screwed. – Reid Main Mar 11 '14 at 17:46
  • Usually you get fat binaries that include support for both, and it should work fine. – Cameron Mar 11 '14 at 18:57
  • Sorry I mean if they gave you a project to include. Your only options would be to modify the project by either setting Build Active Architectures to NO or setting the Architectures to be only 32 bit. Either way you'd be modifying a project unnecessarily. – Reid Main Mar 11 '14 at 19:51
  • This worked for me flawlessly after spending a useless amount of time playing with the Architectures. Thank you! – geekchic Mar 19 '14 at 09:12
  • @ReidMan how can you see what is getting built?! – DanMoore Apr 02 '14 at 17:02