qt_target_qml_sources
Резюме
qt_target_qml_sources(
target
[QML_FILES ...]
[RESOURCES ...]
[PREFIX resource_path]
[OUTPUT_TARGETS out_targets_var]
[NO_LINT]
[NO_CACHEGEN]
[NO_QMLDIR_TYPES]
) Если бессвязные команды отключены, используйте qt6_target_qml_sources() вместо этого. Он поддерживает тот же набор аргументов, что и эта команда.
Описание
Примечание: Эта команда требует CMake 3.19 или более поздней версии.
qt_target_qml_sources() предоставляет возможность добавлять больше файлов в модуль QML после вызова qt_add_qml_module(). Как правило, вы передаете набор .qml файлов и ресурсов в qt_add_qml_module() напрямую, но в некоторых случаях может быть желательно или даже необходимо добавить файлы после вызова qt_add_qml_module(). Например, вы можете захотеть добавить файлы условно, основываясь на выражении if оператора, или из подкаталогов, которые будут добавлены только при выполнении определенных условий. Вы можете захотеть добавить набор файлов с другими характеристиками, например, с другим префиксом ресурса или с отключенным линтингом и компиляцией байткода. Команда qt_target_qml_sources() позволяет реализовать эти сценарии.
Аргументы
target должен быть целевым объектом модуля QML, или, если у модуля QML нет отдельного целевого объекта, это должен быть целевой объект плагина модуля.
QML_FILES — это список .qml, .js и .mjs файлов, которые нужно добавить в модуль QML. Этот параметр имеет точно такой же эффект, как и параметр QML_FILES команды qt_add_qml_module(), включая автоматическую компиляцию в байт-код и обработку линтинга.
Параметры NO_CACHEGEN и NO_LINT также имеют тот же эффект, что и для qt_add_qml_module(). Они отключают компиляцию байткода и обработку линтинга для файлов, перечисленных с QML_FILES. Это поведение также можно указать только для отдельных файлов, используя свойства файлов исходного кода.
NO_QMLDIR_TYPES предотвращает добавление QML_FILES в качестве типов в сгенерированный файл qmldir.
RESOURCES имеет точно такой же эффект, как параметр RESOURCES команды qt_add_qml_module(). Он предоставляет список файлов, которые нужно добавить в target в качестве обычных ресурсов. Эти файлы, как правило, это такие вещи, как изображения, шейдеры и т. д., к которым QML-код ссылается каким-либо образом.
Файлы, добавленные в модуль через QML_FILES или RESOURCES, будут размещены под тем же префиксом ресурса и целевым путем, что и при добавлении их командой qt_add_qml_module(). Это можно переопределить, указав другое расположение с помощью параметра PREFIX. Значение, следующее за ключевым словом PREFIX, будет использовано непосредственно, без добавления целевого пути. Конечный путь ресурса каждого файла будет состоять из префикса плюс путь файла ниже CMAKE_CURRENT_SOURCE_DIR. Свойство файла исходного кода QT_RESOURCE_ALIAS также может быть использовано для переопределения этого относительного пути.
qt_add_qml_module(backing
URI Example
VERSION 1.0
RESOURCE_PREFIX /my.company.com/imports
)
qt_target_qml_sources(backing
QML_FILES special/First.qml
RESOURCES icons/logo.png
)
qt_target_qml_sources(backing
PREFIX /other.company.com/debugging
QML_FILES Inspector.qml
) В приведенном выше примере ресурсы целевого объекта backing будут содержать следующее:
/my.company.com/imports/Example/special/First.qml/my.company.com/imports/Example/icons/logo.png/other.company.com/debugging/Inspector.qml
OUTPUT_TARGETS также аналогичен соответствующему параметру для qt_add_qml_module(). Используйте его для указания имени переменной, в которой необходимо хранить любые дополнительные целевые объекты, созданные для статических сборок. Если target будет установлен, эти дополнительные целевые объекты также необходимо установить для удовлетворения требований к компоновке.
Свойства файлов исходного кода
Ряд свойств файлов исходного кода могут использоваться для влияния на обработку каждого отдельного файла .qml на различных этапах обработки модуля QML. Они переопределяют любые параметры более высокого уровня, указанные в вызовах qt_target_qml_sources() или qt_add_qml_module(). Все эти свойства должны быть установлены до добавления файлов с помощью одной из этих двух команд.
QT_QML_SKIP_QMLLINT можно установить в TRUE для файла исходного кода, чтобы предотвратить его включение в автоматическую обработку qmllint. По умолчанию все .qml файлы будут включены в запуск линтинга целевого объекта, но этот параметр может использоваться для исключения определенных файлов.
QT_QML_SKIP_CACHEGEN делает аналогичную работу, предотвращая компиляцию файла исходного кода в байт-код, когда это свойство установлено в TRUE. Обратите внимание, что файл по-прежнему будет добавлен в target как ресурс в нескомпилированном виде (см. Кэширование скомпилированных QML-источников).
Установите свойство файла исходного кода QT_QML_SKIP_QMLDIR_ENTRY в TRUE для предотвращения добавления этого файла .qml в качестве типа в файл typeinfo модуля QML (см. Автоматическое создание файлов qmldir и typeinfo). Обычно это используется только для файла, который не экспонирует публичный тип, например, для файла JS с ограниченным доступом.
По умолчанию при создании файла qmldir для каждого .qml файла, предоставляющего тип, будет сгенерирована одна запись типа. Ей будет присвоено номером версии X.0, где X — это главная версия модуля QML. Если у модуля QML есть PAST_MAJOR_VERSIONS , та же схема будет применена и к ним, прибавляя X.0 для каждой прошедшей основной версии X. В ситуациях, когда файл должен предоставлять записи типа для другого набора версий (например, он был добавлен в незначительной патчи версии после выпуска .0 ), укажите эти версии в свойстве QT_QML_SOURCE_VERSIONS файла исходного кода. Для каждой версии будет создана одна запись типа.
Если тип, который предоставляет файл .qml , является одиночным, установите его свойство QT_QML_SINGLETON_TYPE в TRUE. Аналогично, свойство исходного кода файла QT_QML_INTERNAL_TYPE можно установить в TRUE , чтобы указать, что тип, который он предоставляет, является внутренним. Имя самого типа также можно переопределить с помощью свойства QT_QML_SOURCE_TYPENAME . Все три из них будут отражены в записях типа файла в сгенерированном файле qmldir.
Все файлы, перечисленные с QML_FILES или RESOURCES , будут добавлены в ресурсы target . Их расположение в ресурсах состоит из базовой точки и относительного пути. Базовая точка по умолчанию — это объединение префикса ресурса модуля QML и его целевого пути, но это можно переопределить с помощью аргумента PREFIX. Относительный путь по умолчанию — это путь файла относительно свойства целевого объекта target SOURCE_DIR . Этот относительный путь можно переопределить, установив свойство QT_RESOURCE_ALIAS в файле исходного кода. Это часто используется для сбора файлов из разных каталогов и их отображения в ресурсах по общему расположению.
set_source_files_properties(nested/way/down/File.qml PROPERTIES
QT_RESOURCE_ALIAS File.qml
)
set_source_files_properties(TemplateFile.qml PROPERTIES
QT_RESOURCE_ALIAS templates/File.qml
QT_QML_SKIP_QMLDIR_ENTRY TRUE
QT_QML_SKIP_QMLLINT TRUE
QT_QML_SKIP_CACHEGEN TRUE
)
qt_add_qml_module(qt_target_qml_sources_example
URI Example
VERSION 2.3
RESOURCE_PREFIX /my.company.com/imports
QML_FILES
nested/way/down/File.qml
TemplateFile.qml
)
set_source_files_properties(some_old_thing.qml PROPERTIES
QT_QML_SOURCE_VERSIONS "1.1;2.0"
QT_QML_SOURCE_TYPENAME OldThing
)
set_source_files_properties(../../../images/button-types.png PROPERTIES
QT_RESOURCE_ALIAS button-types.png
)
qt_target_qml_sources(qt_target_qml_sources_example
QML_FILES some_old_thing.qml
RESOURCES
../../../images/button-types.png
doc/README.txt
) В приведенном выше примере ресурсы целевого объекта qt_target_qml_sources_example будут содержать следующее:
/my.company.com/imports/Example/File.qml/my.company.com/imports/Example/templates/File.qml/my.company.com/imports/Example/some_old_thing.qml/my.company.com/imports/Example/button-types.png/my.company.com/imports/Example/doc/README.txt
Сгенерированный файл qmldir будет содержать следующие записи типа:
File 2.0 File.qml OldThing 1.1 some_old_thing.qml OldThing 2.0 some_old_thing.qml
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qt-target-qml-sources.html