2016-09-06 4 views
0

У меня есть Qt версия, которая поддерживает следующую ABI (в Qt Creator → Preferences → Построить & Run/Qt версии):Как определить целевую архитектуру iOS в qmake?

  • рычажного MacOS-родового-mach_o-32bit
  • рычажного Macos-родовой-mach_o -64bit
  • x86-MacOS-родовой-mach_o-32bit
  • x86-MacOS-родового-mach_o-64bit

Таким образом, сочетая в Qt Kit это Qt версии с различной compil я могу создавать библиотеки для всех упомянутых архитектур.

В то же время mkspecs/qconfig.pri содержит:

host_build { 
    QT_ARCH = x86_64 
    QT_TARGET_ARCH = arm 
} else { 
    QT_ARCH = arm 
} 

Так, в .pro файл я не могу обнаружить целевую архитектуру (это всегда arm). Я могу проверить CONFIG на значение iphonesimulator и поэтому обнаруживать архитектуру руки/не arm, но есть еще 32-битная/64-разрядная проблема.

Есть ли способ отличить armv7/arm64/... встроенный qmake (.pro-файл)?

+0

По какой причине вы должны различать их? Я имею в виду, что для профильных файлов системы qmake лучше иметь как можно больше кроссплатформенности. Btw, вы можете явно установить конфигурацию сборки, например: Добавить тип target/build в Qt Creator, например ios-armv7; Также добавьте что-то вроде 'CONFIG + = ios-armv7' к его аргументам. Теперь вы можете выполнять действия, специфичные для архитектуры, в вашем .pro: 'ios-armv7 {...}' –

+0

Мне нужно выполнить определенные задания пост-сборки (которые зависят от типа дуги), такие как установка значков и развертывание, запуск конкретные виртуальные машины и запуск тестов ... –

ответ

0

Единственный метод, который я нашел это:

Qt Creator → Preferences → Построить & Run/Kits → Среда → Изменить ...

чем установить конкретную IOS_ARCH ENV вар для каждого комплекта.

В .pro файле:

IOS_ARCH = $$(IOS_ARCH) 
!isEmpty(IOS_ARCH): TARGET_ARCH = $$IOS_ARCH 
# then use $$TARGET_ARCH as usual