从命令行构建QML应用程序(不使用Qt Creator)

时间:2016-08-28 15:18:51

标签: qt ubuntu g++ qml qmake

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

关注this answer然后this 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版本,因为{{ 1}}是added in Qt 5.6

full generated Makefile包含 99个引用AA_EnableHighDpiScaling和179个引用/usr/include/qt5。 Qt 5.7安装在/usr/lib/x86_64-linux-gnu/qt5中。显然,我需要修改qmake命令中的某些内容,以使其指向其他位置。

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

1 个答案:

答案 0 :(得分: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
)