Почему lupdate не включает строку qml qstr в файл .ts? - PullRequest
0 голосов
/ 17 октября 2019

У меня есть этот .pro файл:

TEMPLATE = subdirs
SUBDIRS += internal app

app.depends = internal
app.subdir = src/app
internal.subdir = src/internal

TRANSLATIONS = \
    $$PWD/translations/croatian.ts \
    $$PWD/translations/danish.ts \
    $$PWD/translations/english.ts \
    $$PWD/translations/french.ts \
    $$PWD/translations/german.ts \
    $$PWD/translations/italian.ts \
    $$PWD/translations/norwegian.ts \
    $$PWD/translations/portuguese.ts \
    $$PWD/translations/romanian.ts \
    $$PWD/translations/spanish.ts

internal.pro это:

TEMPLATE = lib
TARGET = internal
CONFIG += c++1z

QT += core core-private gui quick serialport sql multimedia

DEFINES += CURRENT_PATH=\\\"$$PWD\\\"

CONFIG(release, debug|release) {
    CONFIG += qtquickcompiler
    QMAKE_CXXFLAGS += -O3
}

CONFIG(debug, debug|release) {
    QMAKE_CXXFLAGS += -O0
    QMAKE_CXXFLAGS -= -O1
    QMAKE_CXXFLAGS -= -O2
    QMAKE_CXXFLAGS -= -O3
    QMAKE_CXXFLAGS += --debug
}

#MS_SKELETON_MODULES = core utils network
#include($$PWD/../external/ms-skeleton/ms-skeleton.pri)

include($$PWD/aggiornamento/aggiornamento.pri)
include($$PWD/allarmi/allarmi.pri)
include($$PWD/comunicazione/comunicazione.pri)
include($$PWD/core/core.pri)
include($$PWD/jsoncpp/jsoncpp.pri)
include($$PWD/mqtt/mqtt.pri)
include($$PWD/other/other.pri)
include($$PWD/parametri/parametri.pri)
include($$PWD/programs/programs.pri)
include($$PWD/serializer/serializer.pri)

unix: target.path = /opt/Tagliavini/lib
!isEmpty(target.path): INSTALLS += target

и app.pro это:

TEMPLATE = app
TARGET = UserInterface
CONFIG += c++1z

QT += core gui quick sql multimedia

DEFINES += CURRENT_PATH=\\\"$$PWD\\\"

CONFIG(release, debug|release) {
    CONFIG += qtquickcompiler
    QMAKE_CXXFLAGS += -O3
}

CONFIG(debug, debug|release) {
    QMAKE_CXXFLAGS += -O0
    QMAKE_CXXFLAGS -= -O1
    QMAKE_CXXFLAGS -= -O2
    QMAKE_CXXFLAGS -= -O3
    QMAKE_CXXFLAGS += --debug
}

LIBS += -L$$shadowed($$PWD)/../internal/ -linternal

INCLUDEPATH += \
    $$PWD/../internal \
    $$PWD/../external/ms-skeleton

SOURCES += $$PWD/main.cpp

RESOURCES += \
    $$PWD/../../font/fonts.qrc \
    $$PWD/../../images/images.qrc \
    $$PWD/qml/qml.qrc \
    $$PWD/../../sounds/sounds.qrc

unix: target.path = /opt/Tagliavini/bin
!isEmpty(target.path): INSTALLS += target

Когда я пытаюсь создать файл .ts с lupdate, файлы генерируются правильно, но файл .ts не объединяет строки qstr, которые находятся в файлах qml. (файл qml находится в app.pro), вместо этого все строки, которые я хочу перевести в файлы .cpp, правильно распознаются и помещаются в файл .ts. (это во internal.pro). Где проблема ??

1 Ответ

1 голос
/ 26 октября 2019

Похоже, вы включаете ваши файлы .qml в ресурсы .qrc, но не в сам проект SOURCES . lupdate не будет выбирать / анализировать ваши файлы .qrc для вывода списка файлов .qml. Таким образом, вам нужно будет добавить ваши файлы .qml в SOURCES по одному или по каталогу.

lupdate_only{
SOURCES+=example.qml
SOURCES+=app/FancyControls/*.qml
}

Это будет дублировать записи вашего файла QML в панели проекта Qt Creator. Дерево, которое не очень желательно. Таким образом, вы можете закомментировать эти строки в вашем .pro-файле и раскомментировать его перед любым lupdate. Также необходимо ограничить этот импорт в условном выражении lupdate_only {} . Убедитесь, что между lupdate_only и фигурной скобкой нет места. Фактически, ваш компилятор C / C ++ не ожидал, что файл qml будет скомпилирован.

...