# QMAKE_ASSET_CATALOGS # Paths to xcassets directories to be compiled # # QMAKE_ASSET_CATALOGS_BUILD_PATH # Location which asset catalogs will be compiled to. # If the current target is an app bundle, defaults to its Resources directory. # Otherwise, this value must be set manually. # # QMAKE_ASSET_CATALOGS_APP_ICON # Name of the icon resource in the asset catalogs that will be used as the app icon. # Defaults to AppIcon. # # QMAKE_ASSET_CATALOGS_LAUNCH_IMAGE # Name of the launch image resource in the asset catalogs that will be used as the launch image. # # QMAKE_ASSET_CATALOGS_INSTALL_PATH # Base path to install files to. Falls back to a path relative to the target install path, # based on QMAKE_ASSET_CATALOGS_BUILD_PATH. !have_target|if(!build_pass:!isEmpty(BUILDS)): \ return() !isEmpty(QMAKE_ASSET_CATALOGS) { load(resolve_target) isEmpty(QMAKE_ASSET_CATALOGS_BUILD_PATH) { !isEmpty(QMAKE_RESOLVED_BUNDLE):equals(TEMPLATE, app):app_bundle { macos: \ QMAKE_ASSET_CATALOGS_BUILD_PATH = $$QMAKE_RESOLVED_BUNDLE/Contents/Resources else: \ QMAKE_ASSET_CATALOGS_BUILD_PATH = $$QMAKE_RESOLVED_BUNDLE } else { error("QMAKE_ASSET_CATALOGS_BUILD_PATH must be set when using QMAKE_ASSET_CATALOGS.") } } QMAKE_ASSET_CATALOGS_BUILD_PATH = $$clean_path($$QMAKE_ASSET_CATALOGS_BUILD_PATH) macx-xcode { !isEmpty(QMAKE_ASSET_CATALOGS_APP_ICON) { asset_catalog_appicon.name = "ASSETCATALOG_COMPILER_APPICON_NAME" asset_catalog_appicon.value = $$QMAKE_ASSET_CATALOGS_APP_ICON QMAKE_MAC_XCODE_SETTINGS += asset_catalog_appicon } !isEmpty(QMAKE_ASSET_CATALOGS_LAUNCH_IMAGE) { asset_catalog_launchimage.name = "ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME" asset_catalog_launchimage.value = $$QMAKE_ASSET_CATALOGS_LAUNCH_IMAGE QMAKE_MAC_XCODE_SETTINGS += asset_catalog_launchimage } asset_catalog_compiler.files = $$QMAKE_ASSET_CATALOGS macos: asset_catalog_compiler.path = Contents/Resources QMAKE_BUNDLE_DATA += asset_catalog_compiler } else { !isEmpty(QMAKE_ASSET_CATALOGS_APP_ICON) { asset_catalog_app_icon_arg = \ --app-icon $$shell_quote($$QMAKE_ASSET_CATALOGS_APP_ICON) } !isEmpty(QMAKE_ASSET_CATALOGS_LAUNCH_IMAGE) { asset_catalog_launch_image_arg = \ --launch-image $$shell_quote($$QMAKE_ASSET_CATALOGS_LAUNCH_IMAGE) } asset_catalog_compiler.target = $$OUT_PWD/asset_catalog_compiler.Info.plist asset_catalog_compiler.commands = $$shell_quote($$QMAKE_ACTOOL) \ $$asset_catalog_app_icon_arg \ $$asset_catalog_launch_image_arg \ --output-partial-info-plist $$shell_quote($$asset_catalog_compiler.target) \ --platform $${version_identifier} \ --minimum-deployment-target $${deployment_target} \ --compile $$shell_quote($$QMAKE_ASSET_CATALOGS_BUILD_PATH) for (catalog, QMAKE_ASSET_CATALOGS) { asset_catalog_compiler.commands += $${catalog} asset_catalog_compiler.depends += $$files($$catalog/*, true) } actool_output_files = $$system(\ mkdir -p $$system_quote($$QMAKE_ASSET_CATALOGS_BUILD_PATH) && \ /usr/libexec/PlistBuddy -c \'Print :com.apple.actool.compilation-results:output-files\' \ /dev/stdin <<< $($${asset_catalog_compiler.commands} 2>/dev/null) | sed -Ene \'s/^ +//p\', lines) for (output_file, actool_output_files) { !equals(output_file, $$asset_catalog_compiler.target): \ actool_output_files_rel += $$relative_path($$output_file, $$QMAKE_ASSET_CATALOGS_BUILD_PATH) } QMAKE_EXTRA_TARGETS += asset_catalog_compiler PRE_TARGETDEPS += $$asset_catalog_compiler.target isEmpty(QMAKE_ASSET_CATALOGS_INSTALL_PATH) { !isEmpty(target.path): \ QMAKE_ASSET_CATALOGS_INSTALL_PATH = $${target.path}/ QMAKE_ASSET_CATALOGS_INSTALL_PATH = $${QMAKE_ASSET_CATALOGS_INSTALL_PATH}$$relative_path(\ $$QMAKE_ASSET_CATALOGS_BUILD_PATH, $$absolute_path($$DESTDIR, $$OUT_PWD)) } for (ac_install_file, actool_output_files_rel) { asset_catalogs_files.files += \ $$QMAKE_ASSET_CATALOGS_BUILD_PATH/$$ac_install_file } contains(INSTALLS, target): asset_catalogs_files.depends += install_target asset_catalogs_files.path = $$QMAKE_ASSET_CATALOGS_INSTALL_PATH asset_catalogs_files.CONFIG += no_check_exist INSTALLS += asset_catalogs_files } } else: macx-xcode { # Backwards compatibility for (bundle_data, QMAKE_BUNDLE_DATA) { for (bundle_file, $${bundle_data}.files) { !contains(bundle_file, .*\.xcassets$): next() warning("*.xcassets in QMAKE_BUNDLE_DATA is deprecated. Use QMAKE_ASSET_CATALOGS instead.") !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() } }