Forum Programmation.c++ [Résolu] Qt, cmake et debian…

Posté par  . Licence CC By‑SA.
Étiquettes :
0
5
juil.
2017

Bonjour,

J’essaye de compiler un projet qui est une simple dérivation de l’exemple officiel.

Par contre, le reste de mon projet utilise cmake. J’ai essayé plusieurs valeur de version minimale sans succès. Pour cmake j’ai regardé : ici pour l’officiel et là pour le non officiel.

Je suis sous debian 9 avec les paquets qt installé. On retrouve les fichiers d’inclusion dans /usr/include/x86_64-linux-gnu/qt5. Je compile avec gcc qui me dit qu’il ne trouve pas les include :'(.

Si quelqu’un a une idée pour m’orienter.

Voici le fichier cpp :

#include <QtTest/QtTest>

class MainTest:public QObject
{
    Q_OBJECT
private slots:
       void toUpper();
};

void MainTest::toUpper()
{
    QString str = "Hello";
    QVERIFY(str.toUpper() == "HELLO");
}

QTEST_MAIN(MainTest)

#include "MainTest.moc"

Le cmakelist :

cmake_minimum_required(VERSION 3.1.0)
project(test)

add_executable(test src/MainTest.cpp)

# Find includes in corresponding build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)
# Instruct CMake to run moc automatically when needed.
set(CMAKE_AUTOMOC ON)

# Find the QtWidgets library
find_package(Qt5Test REQUIRED)

# Use the Widgets module from Qt 5.
#target_link_libraries(helloworld Qt5::Widgets)

La compilation :

$ cmake ../test/
-- The C compiler identification is GNU 6.3.0
-- The CXX compiler identification is GNU 6.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /…/build_test

$ make
Scanning dependencies of target test
[ 50%] Building CXX object CMakeFiles/test.dir/src/MainTest.cpp.o
/…/src/MainTest.cpp:5:25: fatal error: QtTest/QtTest: Aucun fichier ou dossier de ce type
 #include <QtTest/QtTest>
                         ^
compilation terminated.
CMakeFiles/test.dir/build.make:62 : la recette pour la cible « CMakeFiles/test.dir/src/MainTest.cpp.o » a échouée
make[2]: *** [CMakeFiles/test.dir/src/MainTest.cpp.o] Erreur 1
CMakeFiles/Makefile2:67 : la recette pour la cible « CMakeFiles/test.dir/all » a échouée
make[1]: *** [CMakeFiles/test.dir/all] Erreur 2
Makefile:83 : la recette pour la cible « all » a échouée
make: *** [all] Erreur 2
$
  • # au hasard

    Posté par  . Évalué à 3.

    tu cherches

    #include <QtTest/QtTest>

    s'il est bien ou tu penses tu devrais avoir un QtTest/QtTest.h dans /usr/include#/x86_64-linux-gnu/qt5

    et sinon c'est quoi ce # dans le chemin ?
    ca ne devrait pas plutot etre /usr/include/x86_64-linux-gnu/qt5

    • [^] # Re: au hasard

      Posté par  . Évalué à 3.

      Le # est une erreur de copier/coller concaténation… en fait, j’avais :

      /usr/include# ls x86_…/

      Quand j’ai concaténé, j’ai gardé le #…

      Je vais me répondre, j’ai trouvé une partie.

  • # QT5_USE_MODULES

    Posté par  . Évalué à 2.

    Il faut ajouter : QT5_USE_MODULES(test Test) le premier étant le project et le second la bibliothèque Qt associé sans le Qt.

    Par contre, maintenant, il ne me génère pas le moc… je regarde.

    • [^] # Re: QT5_USE_MODULES

      Posté par  . Évalué à 5.

      Je me réponds, Cmake est sensible à l’ordre des instructions…

      il faut mettre le find_package en premier se qui définie tout le reste.

      Voici la version qui fonctionne :

      cmake_minimum_required(VERSION 2.8.3)
      project(test)
      find_package(Qt5Test REQUIRED) # À mettre au début
      
      
      # Find includes in corresponding build directories
      set(CMAKE_INCLUDE_CURRENT_DIR ON)
      # Instruct CMake to run moc automatically when needed.
      set(CMAKE_AUTOMOC ON)
      
      add_executable(test src/MainTest.cpp)
      
      
      QT5_USE_MODULES(test Test)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.