File: QtBundleQmlModuleForMacOS.cmake

package info (click to toggle)
qt6-declarative 6.4.2%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 279,108 kB
  • sloc: cpp: 655,548; javascript: 513,497; xml: 9,201; python: 3,374; ansic: 3,278; sh: 213; php: 27; makefile: 17
file content (29 lines) | stat: -rw-r--r-- 1,330 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function(add_qml_module_to_macos_app_bundle app_target qml_plugin_target qml_module_uri)
    if(QT6_IS_SHARED_LIBS_BUILD AND APPLE)
        # The application's main.cpp adds an explicit QML import path to look for qml module plugins
        # under a PlugIns subdirectory of a macOS app bundle.
        # Copy the qmldir and shared library qml plugin.

        # Ensure the executable depends on the plugin so the plugin is copied
        # only after it was built.
        add_dependencies(${app_target} ${qml_plugin_target})

        set(app_dir "$<TARGET_FILE_DIR:${app_target}>")

        string(REGEX REPLACE "[^A-Za-z0-9]" "_" escaped_uri "${qml_module_uri}")

        set(dest_module_dir_in_app_bundle "${app_dir}/../PlugIns/${escaped_uri}")

        set(qml_plugin_dir "$<TARGET_FILE_DIR:${qml_plugin_target}>")
        set(qmldir_file "${qml_plugin_dir}/qmldir")

        add_custom_command(TARGET ${app_target} POST_BUILD
            COMMAND ${CMAKE_COMMAND} -E make_directory ${dest_module_dir_in_app_bundle}
            COMMAND ${CMAKE_COMMAND} -E copy_if_different
                    $<TARGET_FILE:${qml_plugin_target}> ${dest_module_dir_in_app_bundle}
            COMMAND ${CMAKE_COMMAND} -E copy_if_different
                    ${qmldir_file} ${dest_module_dir_in_app_bundle}
        )
    endif()
endfunction()