0

我有这个 .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

当我尝试使用 lupdate 创建文件 .ts 时,文件会正确生成,但文件 .ts 不会将 qstr 字符串包含在 qml 文件中。(文件 qml 进入 app.pro ),而不是我想翻译成 .cpp 文件的字符串都被正确识别并放入 .ts 文件中。(这些都进入 internal.pro )问题出在哪里?

4

1 回答 1

2

您似乎将 .qml 文件包含在 .qrc 资源中,但未包含在项目SOURCES本身中。lupdate不会选择/解析您的 .qrc 文件以列出 .qml 文件。因此,您必须将 .qml 文件逐个或按目录添加到SOURCES 。

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

这将在 Qt Creator 项目窗格树中复制您的 QML 文件条目,这是非常不可取的。因此,您可以在 .pro 文件中注释掉这些行,并在任何 lupdate 之前取消注释。在lupdate_only{}条件语句中隔离这些导入也是强制性的。确保 lupdate_only 和大括号之间没有空格。实际上,您的 C/C++ 编译器不会期望编译 qml 文件。

于 2019-10-26T10:33:22.087 回答