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

Bibliothèques Discussion :

[cmake] set_source_files_properties ne marche pas pour qdbusxml2cpp


Sujet :

Bibliothèques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 112
    Par défaut [cmake] set_source_files_properties ne marche pas pour qdbusxml2cpp
    Bonjour,

    Dans mon cmakelists.txt, je fais un qt4_add_dbus_interface pour que le make créée l'interface qtdbus correspondant à mon xml "configurationmanager-introspec.xml".

    Je veux ajouter un #include "metatypes.h" à mon .h généré.

    Ca marche en faisant qdbusxml2cpp -i metatypes.h, mais pour le faire avec le cmakelists.txt, il parait qu'il faut utiliser set_source_files_properties. Donc je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    set(configurationmanager_xml ${CMAKE_CURRENT_SOURCE_DIR}/dbus/configurationmanager-introspec.xml)
     
    set_source_files_properties(
       ${configurationmanager_xml}
       PROPERTIES 
       INCLUDE "metatypes.h") 
     
    qt4_add_dbus_interface(
       appli_kde_SRCS 
       ${configurationmanager_xml}
       configurationmanager_interface)
    J'ai aussi essayé avec COMPILE_FLAGS "-i metatypes.h" au lieu de INCLUDE "metatypes.h". Mais ca ne change rien du tout. Le configurationmanager_interface.h est généré mais en haut, c'est écrit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    * This file was generated by qdbusxml2cpp version 0.7
     * Command line was: qdbusxml2cpp -m -p configurationmanager_interface /home/bla/bla/dbus/configurationmanager-introspec.xml
    Ca n'a pas ajouté le -i metatypes à la ligne de commande!
    Est-ce que j'aurais oublié une étape?

    Merci

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Par défaut
    Je ne connais pas du tout qdbusxml2cpp mais je suis sûr que ce n'est pas CMake qui te permettra de modifier ton fichier de référence.

    COMPILE_FLAGS sert à spécifier des flags supplémentaires de compilation, dans ton cas, -I indiquerait juste où trouver un header (mais pas à l'ajouter dans le fichier). Quand à la propriété INCLUDE, je n'en ai jamais entendu parler.

    J'ai regardé un peu le code CMake. La macro qui semble contenir l'option -i se nomme QT4_ADD_DBUS_ADAPTOR.

    Je dirais donc quelque chose comme

    qt4_add_dbus_adaptor (
    appli_kde_SRCS
    ${configurationmanager_xml}
    metatypes.h
    ?
    ?
    )
    mais à toi de voir...

    macro QT4_ADD_DBUS_ADAPTOR(outfiles xmlfile parentheader parentclassname [basename] )
    create a dbus adaptor (header and implementation file) from the xml file
    describing the interface, and add it to the list of sources. The adaptor
    forwards the calls to a parent class, defined in parentheader and named
    parentclassname. The name of the generated files will be
    <basename>adaptor.{cpp,h} where basename is the basename of the xml file.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 112
    Par défaut
    Je teste ca demain, mais c'est quand meme bizarre pcq dans pas mal de sites j'ai vu mon exemple...

    http://www.nabble.com/KDE-kdelibs-td22047139.html

    http://lists.kde.org/?l=kde-commits&...2093406900&w=2

    Par exemple...

    Dans le premier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    set_source_files_properties(${kcookiejar_XML} PROPERTIES INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/../kioslave/http/kcookiejar/kcookiejar_include.h")
    +qt4_add_dbus_interface(khtml_LIB_SRCS ${kcookiejar_XML} kcookiejar_interface)

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Par défaut
    Voici le code actuel de la macro QT4_ADD_DBUS_INTERFACE.
    Comme tu peux voir à la ligne 8, l'option -i n'est pas positionné.

    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
     
      MACRO(QT4_ADD_DBUS_INTERFACE _sources _interface _basename)
        GET_FILENAME_COMPONENT(_infile ${_interface} ABSOLUTE)
        SET(_header ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.h)
        SET(_impl   ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.cpp)
        SET(_moc    ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.moc)
     
        ADD_CUSTOM_COMMAND(OUTPUT ${_impl} ${_header}
            COMMAND ${QT_DBUSXML2CPP_EXECUTABLE} -m -p ${_basename} ${_infile}
            DEPENDS ${_infile})
     
        SET_SOURCE_FILES_PROPERTIES(${_impl} PROPERTIES SKIP_AUTOMOC TRUE)
     
        QT4_GENERATE_MOC(${_header} ${_moc})
     
        SET(${_sources} ${${_sources}} ${_impl} ${_header} ${_moc})
        MACRO_ADD_FILE_DEPENDENCIES(${_impl} ${_moc})
     
      ENDMACRO(QT4_ADD_DBUS_INTERFACE)
    En fait, ils ont réécrit la macro chez KDE, ce qui donne bien ce que tu veux.
    Et tu avais raison pour la propriété INCLUDE.

    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
     
      MACRO(QT4_ADD_DBUS_INTERFACE _sources _interface _basename)
        GET_FILENAME_COMPONENT(_infile ${_interface} ABSOLUTE)
        SET(_header ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.h)
        SET(_impl   ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.cpp)
        SET(_moc    ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.moc)
     
        GET_SOURCE_FILE_PROPERTY(_nonamespace ${_interface} NO_NAMESPACE)
        IF ( _nonamespace )
            SET(_params -N -m)
        ELSE ( _nonamespace )
            SET(_params -m)
        ENDIF ( _nonamespace )
     
        GET_SOURCE_FILE_PROPERTY(_classname ${_interface} CLASSNAME)
        IF ( _classname )
            SET(_params ${_params} -c ${_classname})
        ENDIF ( _classname )
     
        GET_SOURCE_FILE_PROPERTY(_include ${_interface} INCLUDE)
        IF ( _include )
            SET(_params ${_params} -i ${_include})
        ENDIF ( _include )
     
        ADD_CUSTOM_COMMAND(OUTPUT ${_impl} ${_header}
            COMMAND ${QT_DBUSXML2CPP_EXECUTABLE} ${_params} -p ${_basename} ${_infile}
            DEPENDS ${_infile})
     
        SET_SOURCE_FILES_PROPERTIES(${_impl} PROPERTIES SKIP_AUTOMOC TRUE)
     
        QT4_GENERATE_MOC(${_header} ${_moc})
     
        SET(${_sources} ${${_sources}} ${_impl} ${_header} ${_moc})
        MACRO_ADD_FILE_DEPENDENCIES(${_impl} ${_moc})
     
      ENDMACRO(QT4_ADD_DBUS_INTERFACE)
    Si tu développes un produit KDE, tu aurais peut-être intérêt à t'appuyer sur leurs modules et non ceux de CMake...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 112
    Par défaut
    Ca veut dire quoi? Que j'utilise pas la bonne macro? Parce que j'ai ajouté FindKDE4.cmake dans le cmakelists.txt et ca change rien.
    Elle est dans quel module cette macro?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 112
    Par défaut
    En effet dans findQt4.cmake j'ai la première que tu as donnée. Mais comment est-ce que je change ca?

Discussions similaires

  1. to_date() marche pas pour moi
    Par hichcasa dans le forum SQL
    Réponses: 10
    Dernier message: 14/11/2008, 17h41
  2. script slide ne marche pas pour export vers.8
    Par hlcginfo dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 09/09/2008, 19h26
  3. Mon Backoffice ne marche pas pour update et delete ?
    Par vascoII dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 17/07/2008, 23h23
  4. Réponses: 3
    Dernier message: 16/02/2007, 15h35
  5. FileGetAttr ne marche pas pour les dossiers ?
    Par WebPac dans le forum Delphi
    Réponses: 13
    Dernier message: 06/07/2006, 14h36

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