IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Outils Discussion :

Problème de compilation Qt/CMake


Sujet :

Outils

  1. #1
    Membre régulier
    Homme Profil pro
    http://tuatini-godard.me/
    Inscrit en
    Décembre 2010
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : http://tuatini-godard.me/

    Informations forums :
    Inscription : Décembre 2010
    Messages : 70
    Points : 93
    Points
    93
    Par défaut Problème de compilation Qt/CMake
    Bonjour à tous,
    Alors voilà j'essaye actuellement de compiler un de mes projets Qt avec l'utilitaire CMake mais j'ai quelques soucis.
    Avec le CMakeLists.txt suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
     
    cmake_minimum_required(VERSION 2.6)
     
    #Project configuration
    project(MyProject)
    FIND_PACKAGE(Qt4 REQUIRED)
    set(EXECUTABLE_OUTPUT_PATH bin/${CMAKE_BUILD_TYPE})
     
    #Add QT headers
    INCLUDE(${QT_USE_FILE})
    INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
     
    # Search and include Qt4 parameters
    # Set Qt min required version and add modules here
    IF(WIN32)
        # FindQt4.cmake is so brain-dead when Xcompiling
        SET(QT_LIBRARY_DIR ${CONTRIBS_PATH}/lib)
        SET(QT_INCLUDE_DIR ${CONTRIBS_PATH}/include/qt4)
        ADD_DEFINITIONS( -I${CONTRIBS_PATH}/include/qt4/QtCore)
        ADD_DEFINITIONS( -I${CONTRIBS_PATH}/include/qt4/QtGui)
        ADD_DEFINITIONS( -I${CONTRIBS_PATH}/include/qt4/QtXml)
        ADD_DEFINITIONS( -I${CONTRIBS_PATH}/include/qt4/QtNetwork)
        ADD_DEFINITIONS( -I${CONTRIBS_PATH}/include/qt4/)
        FIND_PACKAGE(Qt4 4.7.4 COMPONENTS QtCore QtGui QtXml QtSvg QtNetwork REQUIRED )
    ELSE(WIN32)
        FIND_PACKAGE(Qt4 4.7.4 COMPONENTS QtCore QtGui QtXml QtSvg QtNetwork REQUIRED )
    ENDIF(WIN32)
    IF (NOT WIN32)
        #FindQt4.cmake is so brain-dead when Xcompiling
        SET(CMAKEQT_LIBS ${QT_QTCORE_LIBRARY}
                         ${QT_QTGUI_LIBRARY}
                         ${QT_QTSVG_LIBRARY}
                         ${QT_QTNETWORK_LIBRARY}
                         ${QT_QTXML_LIBRARY}) # Add here any other QT module or other library
        INCLUDE(${QT_USE_FILE})
        ADD_DEFINITIONS(${QT_DEFINITIONS})
    ELSE (NOT WIN32)
        SET (CMAKEQT_LIBS -L${CONTRIBS_PATH}/lib # Manually specify paths
                ${CONTRIBS_PATH}/lib/libQtNetwork.a
                ${CONTRIBS_PATH}/lib/libQtXml.a
                ${CONTRIBS_PATH}/lib/libQtGui.a
                ${CONTRIBS_PATH}/lib/libQtCore.a
                ws2_32 winmm imm32 libeay32 ssleay32 crypt32 gdi32)
    ENDIF(NOT WIN32)
     
    #Transform QT files (moc, headers...)
    QT4_WRAP_CPP(app_headers_moc ${header_files})
    QT4_WRAP_UI(app_ui_headers ${ui_forms})
    QT4_ADD_RESOURCES(app_resources_rcc ${app_resources})
     
    #Boost includes
    include(FindBoost)
    link_directories(${Boost_LIBRARY_DIRS})
    include_directories(${Boost_INCLUDE_DIRS})
     
    find_package(
    	Boost 
    	1.48.0
    	REQUIRED signals
    )
     
    message(
    	STATUS
    	${Boost_LIBRARIES}
    )
     
    #App sources definition -------------------------------------------------------------
    file(
    	GLOB_RECURSE
    	source_files
    	src/cpp/*
    )
    file(
    	GLOB_RECURSE
    	header_files
    	src/header/*
    )
    file(
    	GLOB_RECURSE
    	ui_forms
    	src/ui/*
    )
    file(
    	GLOB_RECURSE
    	app_resources
    	src/resource/*
    )
     
    #App compilation definition -------------------------------------------------------------
    add_executable(
    	ResAvionApp
    	${source_files}
    	${app_headers_moc}
    	${app_ui_headers}
    	${app_resources_rcc}
    )
     
    #Linker configuration
    target_link_libraries(
    	ResAvionApp
    	${Boost_LIBRARIES}
    	${QT_LIBRARIES}
    )
    Me renvoie comme code d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    [ 50%] Building CXX object CMakeFiles/ResAvionApp.dir/src/cpp/Main.cpp.o
    [100%] Building CXX object CMakeFiles/ResAvionApp.dir/src/cpp/Mainwindow.cpp.o
    /home/e-kami/workspace/Exos_et_pti_B2IG/ResAvion_Client_App/src/cpp/Mainwindow.cpp:2:33: erreur fatale: ../ui/ui_Mainwindow.h : Aucun fichier ou dossier de ce type
    compilation terminée.
    make[2]: *** [CMakeFiles/ResAvionApp.dir/src/cpp/Mainwindow.cpp.o] Erreur 1
    make[1]: *** [CMakeFiles/ResAvionApp.dir/all] Erreur 2
    make: *** [all] Erreur 2
    J'ai pourtant bien mis:
    INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
    et
    QT4_WRAP_UI(app_ui_headers ${ui_forms})
    mais pas moyen de compiler .
    Je vous mets mon code source en pièce jointe.
    Merci d'avance.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éclairé
    Avatar de Ekleog
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 448
    Points : 879
    Points
    879
    Par défaut
    Pourquoi ne pas simplement utiliser QMake ?

    Ce n'est pas moins portable que CMake, étant donné que de toute façon qmake est fourni avec Qt.

  3. #3
    Membre régulier
    Homme Profil pro
    http://tuatini-godard.me/
    Inscrit en
    Décembre 2010
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : http://tuatini-godard.me/

    Informations forums :
    Inscription : Décembre 2010
    Messages : 70
    Points : 93
    Points
    93
    Par défaut
    Je suis habitué à CMake, enfin je veux dire que je l'ai déjà utilisé par le passé quelquefois, j'aime sa syntaxe. Et je veux pouvoir utiliser un utilitaire de build qui ne soit pas spécifique à un framework. Puis QMake est très critiqué et aux dernières news il est voué à disparaître et être remplacé par un nouvel utilitaire de build dans les futures versions de QT.

  4. #4
    Membre éclairé
    Avatar de Ekleog
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 448
    Points : 879
    Points
    879
    Par défaut
    Je réagirai surtout sur le "Et je veux pouvoir utiliser un utilitaire de build qui ne soit pas spécifique à un framework.".
    Parce que de toute façon, l'application est spécifique au framework, alors pourquoi ne pas en profiter pour rendre le système de build dépendant également ?

    Par ailleurs ils ne supprimeront probablement pas QMake avant une dizaine de version : Qt est particulièrement à cheval sur la compatibilité ascendante !
    Par contre, ils mettront peut-être un nouvel outil de build, en dépréciant QMake.

    Pour en revenir au sujet, il nous faudrait un résultat d'un appel à tree, pour connaître les fichiers générés par CMake, et donc pour connaître les soucis.

  5. #5
    Membre régulier
    Homme Profil pro
    http://tuatini-godard.me/
    Inscrit en
    Décembre 2010
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : http://tuatini-godard.me/

    Informations forums :
    Inscription : Décembre 2010
    Messages : 70
    Points : 93
    Points
    93
    Par défaut
    L'application est en effet spécifique au framework mais je ne veux pas essayer de comprendre QMake alors que CMake me convient parfaitement. J'utiliserai même Cmake dans mes futurs projets non-Qt donc je préfère déjà savoir comment l'utiliser. L'application que j'ai réalisée est un peu bidon, elle me sert juste à me former en quelque sorte. J'ai laissé l'application en pièce jointe de façon à ce que vous puissiez voir en détail mon erreur. Elle contient tout juste le code minimal implémenté lors de la création d'un projet QT, avec quelques déplacement de fichiers de ma part. Merci pour vos réponses.

Discussions similaires

  1. [CMake] Problème de compilation
    Par Joda89 dans le forum Systèmes de compilation
    Réponses: 0
    Dernier message: 11/05/2012, 13h09
  2. problème de compil devc++ socket
    Par stefdem dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 11/12/2003, 11h33
  3. Réponses: 1
    Dernier message: 29/10/2003, 12h16
  4. Problème de compilation de la DLL du XMLRad
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 2
    Dernier message: 16/04/2003, 16h46
  5. Réponses: 1
    Dernier message: 27/05/2002, 01h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo