2016-08-28 1 views
0

J'écris une application QML en utilisant Qt 5.7 sur Ubuntu 14.04. Je préfère utiliser un éditeur autre que Qt Creator, il est donc très difficile de lancer Qt Creator et d'y accéder juste pour appuyer sur Ctrl-R chaque fois que je veux lancer. Je voudrais compiler et lancer mon application à partir de la ligne de commande.Création d'applications QML à partir de la ligne de commande (sans Qt Creator)

Après this answer puis this answer j'ai pu installer qmake et en faire la valeur par défaut:

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

Après this answer je copie la commande build qmake répertoriés par Qt Creator dans l'onglet Projet et la construction avec succès la marque fichier:

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

Cependant, quand je lance make (sur mon travail déjà en Qt-Creator code) Je reçois:

[email protected]:~/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 

Je devine que peut-être la version de Qt étant repris par qmake ou g++ n'est pas la version 5.7 de Qt Creator utilise, depuis AA_EnableHighDpiScaling était added in Qt 5.6.

Le full generated Makefile inclut 99 références à /usr/include/qt5 et 179 références à /usr/lib/x86_64-linux-gnu/qt5. Qt 5.7 est installé dans /home/phrogz/Qt5.7.0. Évidemment, j'ai besoin de modifier quelque chose dans la commande qmake pour obtenir ce point ailleurs.

Comment puis-je faire fonctionner cela? Ai-je besoin de supprimer une ancienne version des bibliothèques qt installées par Ubuntu? Pointez une certaine configuration vers la version de Qt 5.7 qui est maintenant installée (par le programme d'installation Qt) dans mon répertoire personnel? Remplacer les répertoires Qt existants/anciens avec des liens symboliques?

+0

réglage Try/Modification de la variable [ 'INCLUDEPATH'] (http://doc.qt.io/qt-5.7/qmake-project-files.html) dans votre fichier 'qt-client.pro'. –

+0

Vous devez exécuter qmake à partir de l'installation de Qt 5.7. C'est là dans '/ home/phrogz/Qt5.7.0'. – jpnurmi

+0

@jpnurmi Cela a fait l'affaire, merci. Si vous choisissez de publier cette réponse, vous pourriez peut-être expliquer pourquoi '/ home/phrogz/Qt5.7.0/5.7/gcc_64/bin/qmake' fonctionne, mais un lien logiciel vers ce fichier placé dans'/usr/local/bin' (et préféré dans le 'PATH') produit un échec similaire (mais pas identique) à celui vu ci-dessus. – Phrogz

Répondre

1

Ou vous pouvez utiliser 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 
)