equals(TEMPLATE, app):qt { # If the application uses Qt, it needs to be an application bundle # to be able to deploy and run on iOS. The only exception to this # is if you're working with a jailbroken device and can run the # resulting binary from the console/over SSH, but that's not a # use-case we care about, so no need to complicate the logic. CONFIG *= app_bundle # For Qt applications we want Xcode project files as the generated output, # but since qmake doesn't handle the transition between makefiles and Xcode # project files (which happens when using subdirs), we can't just override # MAKEFILE_GENERATOR. Instead, we generate the Xcode project by spawning a # child qmake process with -spec macx-xcode and let the top level qmake # process generate a wrapper makefile that forwards everything to xcodebuild. equals(MAKEFILE_GENERATOR, UNIX): \ CONFIG = xcodebuild $$CONFIG } load(default_post) macx-xcode { device_family.name = TARGETED_DEVICE_FAMILY ios: device_family.value = $$QMAKE_IOS_TARGETED_DEVICE_FAMILY tvos: device_family.value = $$QMAKE_TVOS_TARGETED_DEVICE_FAMILY watchos: device_family.value = $$QMAKE_WATCHOS_TARGETED_DEVICE_FAMILY QMAKE_MAC_XCODE_SETTINGS += device_family ios { # If QMAKE_BUNDLE_DATA contains an asset catalog that includes an # AppIcon.appiconset, we configure Xcode to use it for app icons. for(bundle_data, QMAKE_BUNDLE_DATA) { for(bundle_file, $${bundle_data}.files) { !contains(bundle_file, .*\.xcassets$): next() !exists($$absolute_path($$bundle_file/AppIcon.appiconset, $$_PRO_FILE_PWD_)): next() asset_catalog_appicon.name = "ASSETCATALOG_COMPILER_APPICON_NAME" asset_catalog_appicon.value = "AppIcon" QMAKE_MAC_XCODE_SETTINGS += asset_catalog_appicon break() } !isEmpty(asset_catalog_appicon.name): break() } # Set up default 4-inch iPhone/iPod launch image so that our apps # support the full screen resolution of those devices. qmake_launch_image = Default-568h@2x.png qmake_copy_image.input = $$QMAKESPEC/$$qmake_launch_image qmake_copy_image.output = $$OUT_PWD/$${TARGET}.xcodeproj/$$qmake_launch_image qmake_copy_image.CONFIG = verbatim QMAKE_SUBSTITUTES += qmake_copy_image qmake_launch_images.files = $$qmake_copy_image.output QMAKE_BUNDLE_DATA += qmake_launch_images lessThan(QMAKE_XCODE_VERSION, "6.0") { warning("You need to update Xcode to version 6 or newer to fully support iPhone6/6+") } else { # Set up default LaunchScreen to support iPhone6/6+ qmake_launch_screen = LaunchScreen.xib qmake_copy_launch_screen.input = $$QMAKESPEC/$$qmake_launch_screen qmake_copy_launch_screen.output = $$OUT_PWD/$${TARGET}.xcodeproj/$$qmake_launch_screen QMAKE_SUBSTITUTES += qmake_copy_launch_screen qmake_launch_screens.files = $$qmake_copy_launch_screen.output QMAKE_BUNDLE_DATA += qmake_launch_screens } } } macx-xcode { arch_device.name = "ARCHS[sdk=$${device.sdk}*]" arch_simulator.name = "ARCHS[sdk=$${simulator.sdk}*]" ios { arch_device.value = $$QMAKE_IOS_DEVICE_ARCHS arch_simulator.value = $$QMAKE_IOS_SIMULATOR_ARCHS QMAKE_XCODE_ARCHS = $$QMAKE_IOS_DEVICE_ARCHS $$QMAKE_IOS_SIMULATOR_ARCHS } tvos { arch_device.value = $$QMAKE_TVOS_DEVICE_ARCHS arch_simulator.value = $$QMAKE_TVOS_SIMULATOR_ARCHS QMAKE_XCODE_ARCHS = $$QMAKE_TVOS_DEVICE_ARCHS $$QMAKE_TVOS_SIMULATOR_ARCHS } watchos { arch_device.value = $$QMAKE_WATCHOS_DEVICE_ARCHS arch_simulator.value = $$QMAKE_WATCHOS_SIMULATOR_ARCHS QMAKE_XCODE_ARCHS = $$QMAKE_WATCHOS_DEVICE_ARCHS $$QMAKE_WATCHOS_SIMULATOR_ARCHS } QMAKE_MAC_XCODE_SETTINGS += arch_device arch_simulator only_active_arch.name = ONLY_ACTIVE_ARCH only_active_arch.value = YES only_active_arch.build = debug QMAKE_MAC_XCODE_SETTINGS += only_active_arch } else { # Be more specific about which architecture we're targeting contains(QT_ARCH, arm.*) { ios: VALID_ARCHS = $$QMAKE_IOS_DEVICE_ARCHS tvos: VALID_ARCHS = $$QMAKE_TVOS_DEVICE_ARCHS watchos: VALID_ARCHS = $$QMAKE_WATCHOS_DEVICE_ARCHS } else { ios: VALID_ARCHS = $$QMAKE_IOS_SIMULATOR_ARCHS tvos: VALID_ARCHS = $$QMAKE_TVOS_SIMULATOR_ARCHS watchos: VALID_ARCHS = $$QMAKE_WATCHOS_SIMULATOR_ARCHS } single_arch: VALID_ARCHS = $$first(VALID_ARCHS) ACTIVE_ARCHS = $(filter $(EXPORT_VALID_ARCHS), $(ARCHS)) ARCH_ARGS = $(foreach arch, $(if $(EXPORT_ACTIVE_ARCHS), $(EXPORT_ACTIVE_ARCHS), $(EXPORT_VALID_ARCHS)), -arch $(arch)) QMAKE_EXTRA_VARIABLES += VALID_ARCHS ACTIVE_ARCHS ARCH_ARGS arch_flags = $(EXPORT_ARCH_ARGS) QMAKE_CFLAGS += $$arch_flags QMAKE_CXXFLAGS += $$arch_flags QMAKE_LFLAGS += $$arch_flags }