【问题标题】:Building QML applications from command line (without Qt Creator)从命令行构建 QML 应用程序(没有 Qt Creator)
【发布时间】:2016-08-28 15:18:50
【问题描述】:

我正在 Ubuntu 14.04 上使用 Qt 5.7 编写 QML 应用程序。我更喜欢使用 Qt Creator 以外的编辑器,因此启动 Qt Creator 并切换到它只是在每次我想运行时按 Ctrl-R 会有点麻烦。我想从命令行编译并启动我的应用程序。

this answerthis answer 之后,我能够安装qmake 并将其设为默认值:

sudo apt-get install qt5-qmake
sudo apt-get install qt5-default

按照this answer,我正在复制Qt Creator在项目选项卡中列出的qmake构建命令,并成功构建了make文件:

qmake qt-client.pro -r -spec linux-g++

但是,当我运行 make(在我已经在 Qt-Creator 中工作的代码上)时,我得到:

phrogz@Slub:~/Code/rb3jay/qt-client$ make
g++ -c -pipe -O2 -std=c++0x -Wall -W -D_REENTRANT -fPIE -DQT_NO_DEBUG -DQT_QUICK_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I. -I/usr/include/qt5 -I/usr/include/qt5/QtQuick -I/usr/include/qt5/QtQml -I/usr/include/qt5/QtNetwork -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtCore -I. -o main.o main.cpp
main.cpp: In function ‘int main(int, char**)’:
main.cpp:6:36: error: ‘AA_EnableHighDpiScaling’ is not a member of ‘Qt’
     QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
                                    ^
make: *** [main.o] Error 1

猜测qmakeg++ 使用的Qt 版本可能不是Qt Creator 使用的5.7 版本,因为AA_EnableHighDpiScalingadded in Qt 5.6

full generated Makefile 包括 99 次引用 /usr/include/qt5 和 179 次引用 /usr/lib/x86_64-linux-gnu/qt5。 Qt 5.7 安装在/home/phrogz/Qt5.7.0。显然我需要修改 qmake 命令中的某些内容以使其指向其他地方。

我怎样才能让它工作?我是否需要以某种方式删除 Ubuntu 安装的旧版本的 qt 库?将一些配置指向现在(由 Qt 安装程序)安装在我的主目录中的 Qt 5.7 版本?用符号链接替换现有/旧 Qt 目录?

【问题讨论】:

  • 尝试在qt-client.pro 文件中设置/修改INCLUDEPATH 变量。
  • 您需要从 Qt 5.7 安装运行 qmake。它在/home/phrogz/Qt5.7.0 中。
  • @jpnurmi 成功了,谢谢。如果您选择将其发布为答案,也许您可​​能会详细说明为什么/home/phrogz/Qt5.7.0/5.7/gcc_64/bin/qmake 有效,但是指向该文件的软链接放在/usr/local/bin(并且首选在PATH)会产生类似于(但不是相同)与上面看到的相同。

标签: qt ubuntu g++ qml qmake


【解决方案1】:

或者你可以使用 CMake:

cmake_minimum_required (VERSION 2.8.11)

project(myproject)

find_package(Qt5 5.7.0 REQUIRED COMPONENTS
    Core
    Quick
    Widgets
)
set(CMAKE_AUTOMOC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

add_executable(${PROJECT_NAME}
    main.cpp
)

target_link_libraries(${PROJECT_NAME}
    Qt5::Core
    Qt5::Quick
    Qt5::Widgets
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 2012-01-21
    • 2018-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多