I work with cross platform code, which means I have to build open-source C++ projects for iOS to use them in my iOS app. Sometimes I have to build my own project, sometimes I get a nice CMake setup, but no two projects seem to have exactly the same settings for these two fields.
Some have "armv7", others "armv7 armv7s" and others "armv7 armv7s arm64". I get that "armv7" refers to a specific generation of device hardware. But does that mean if I only set "armv7" my app won't run on armv7s or the new 64bit iPad? Are these multiple architectures like having fat libraries, with separate copies for each architecture?
Then for "Architectures" there are even more options. Options like "Standard Architectures(armv7, armv7s)" and others like "$(ARCHS_STANDARD_32_64_BIT)". I often find these have to be changed to get things to build, without errors about i386. The fact an iOS project actually gets built for Intel (simulator) as well as Arm just confuses things further for me.
I'm really after a higher level explanation how this fits together than a "use this setting" answer. I want to be confident my app will work on the devices it is intended to, since I cannot afford all the different versions of iPad now in existence. For reference, I want to support iPad 2 and up, and iOS 6/7 only.