У чому сенс їх і чи можу я їх встановити в різних значеннях?
У чому сенс їх і чи можу я їх встановити в різних значеннях?
Відповіді:
Архітектури - це те, що ви хочете створити, допустимі архітектури - це ті, які ви могли б уявити, будувати за допомогою кодової бази.
Тож, можливо, ви хочете створити лише свій двійковий файл для armv7, але той самий вихідний код буде складати штрафи для armv7 та armv6. Отже VALID_ARCHS = armv6 armv7 armv7s
, але ви встановлюєте, ARCHS = armv7s
тому що це все, що ви насправді хочете створити зі своїм кодом.
Або в Apple-ese:
ARCHS (Архітектура)
Список ідентифікаторів, розділених пробілом. Вказує архітектури (ABI, моделі процесорів), на які націлено бінарний файл. Коли цей параметр збірки вказує більше однієї архітектури, сформований двійковий код може містити код об'єкта для кожної із зазначених архітектур.
і:
VALID_ARCHS (Дійсні архітектури)
Список ідентифікаторів, розділених пробілом. Вказує архітектури, для яких може бути побудований двійковий файл. Під час збирання цей список перетинається зі значенням налаштування збірки ARCHS; Отриманий список вказує архітектури, якими може працювати бінарний файл. Якщо результуючий список архітектури порожній, ціль не генерує бінарних даних.
Джерело: Довідка про налаштування збірки Xcode
На практиці ви залишаєтеся в VALID_ARCHS
спокої і не турбуєтесь про його зміну, а просто поспішайте з тим, ARCHS
щоб встановити архітектури, які ви хочете побудувати. Як правило, ви встановлюєте налагодження налагодження просто NATIVE_ARCH
, оскільки ви хочете створити лише версію налагодження для машини, на якій ви будете тестувати / запускати її, і випускати версії для повного спектру архітектур, які ви плануєте підтримувати.
З документа Apple ми знаємо, що бінарний Xcode будуватиметься списком, який Valid Architectures
перетинається Architectures
.
Отже, я не думаю, що відповідь Джеремі є правильною, як він каже:
Тож, можливо, ви хочете створити лише свій двійковий файл для armv7, але той самий вихідний код буде
складати штрафи для armv7 та armv6. ОтжеVALID_ARCHS = armv6 armv7 armv7s
, але ви встановлюєте ARCHS = armv7s, тому що це все, що ви насправді хочете створити зі своїм кодом.
Коли ви встановлюєте VALID_ARCHS = armv6 armv7 armv7s
та встановлюєте ARCHS = armv7s
, результат бінарного Xcode буде будувати armv7s - він не може бути сумісний із armv6 / armv7.
І якщо ви хочете сумісні з armv6 / armv7 / armv7s ,, ви повинні встановити VALID_ARCHS = armv6 armv7 armv7s
і ARCHS = armv6
. Таким чином, результат бінарного Xcode буде будуватися armv6, і він може працювати нормально на обох armv6 / armv7 / armv7s, оскільки армейський процесор є сумісним назад .