beaa792e20
This reduces unnecessary OS conditions in qmake since these platforms are mutually exclusive, and also opens up their potential for use on future devices (like carOS(?), which is device idiom '5'). This is also more similar to what Xcode does, as the TARGETED_DEVICE_FAMILY variable is not platform specific. Change-Id: I29d209cd8e0779f492bda829008264773e13c75c Reviewed-by: Lars Knoll <lars.knoll@qt.io>
105 lines
4.4 KiB
Plaintext
105 lines
4.4 KiB
Plaintext
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 {
|
|
ios:isEmpty(QMAKE_APPLE_TARGETED_DEVICE_FAMILY):!isEmpty(QMAKE_IOS_TARGETED_DEVICE_FAMILY) {
|
|
warning("QMAKE_IOS_TARGETED_DEVICE_FAMILY is deprecated; use QMAKE_APPLE_TARGETED_DEVICE_FAMILY")
|
|
QMAKE_APPLE_TARGETED_DEVICE_FAMILY = $$QMAKE_IOS_TARGETED_DEVICE_FAMILY
|
|
}
|
|
|
|
device_family.name = TARGETED_DEVICE_FAMILY
|
|
device_family.value = $$QMAKE_APPLE_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}*]"
|
|
|
|
arch_device.value = $$QMAKE_APPLE_DEVICE_ARCHS
|
|
arch_simulator.value = $$QMAKE_APPLE_SIMULATOR_ARCHS
|
|
QMAKE_XCODE_ARCHS = $$QMAKE_APPLE_DEVICE_ARCHS $$QMAKE_APPLE_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 {
|
|
VALID_ARCHS =
|
|
!simulator|simulator_and_device: VALID_ARCHS += $$QMAKE_APPLE_DEVICE_ARCHS
|
|
simulator: VALID_ARCHS += $$QMAKE_APPLE_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
|
|
|
|
QMAKE_PCH_ARCHS = $$VALID_ARCHS
|
|
}
|