[gelöst] wie cmake verklickern, QT Network zu benutzen



  • Hallo,

    ich habe bisher immer nur mit qmake gearbeitet, und da macht man das ja ganz einfach mit QT += network.

    Nun will ich aber mal mit Plasmoids rumspielen, und habe mir dafür mal ein Smaple-Projekt für Plasmoids in Kdevelop erzeugt, von dem aus ich weiter machen will.

    Das wird komplett via cmake konfiguriert. Funktioniert auch ganz prima, bis zu dem Punkt, wo ich QHttp benutze, da bekomme ich dann beim linken undefined references. Warum ist vollkommen klar, also muss ich in der cmakelists.txt irgendwie einstellen, dass er die QT-option network setzt. Blos wie?

    Das ist die cmakelists.txt

    # Project Needs a name ofcourse
    project(plasma-networkplasma)
    
    # Find the required Libaries
    find_package(KDE4 REQUIRED)
    include(KDE4Defaults)
    
    add_definitions (${QT_DEFINITIONS} ${KDE4_DEFINITIONS})
    include_directories(
       ${CMAKE_SOURCE_DIR}
       ${CMAKE_BINARY_DIR}
       ${KDE4_INCLUDES}
       )
    
    # We add our source code here
    set(networkplasma_SRCS networkplasma.cpp)
    
    # Now make sure all files get to the right place
    kde4_add_plugin(plasma_applet_networkplasma ${networkplasma_SRCS})
    target_link_libraries(plasma_applet_networkplasma 
                          ${KDE4_PLASMA_LIBS} ${KDE4_KDEUI_LIBS})
    
    install(TARGETS plasma_applet_networkplasma
            DESTINATION ${PLUGIN_INSTALL_DIR})
    
    install(FILES plasma-applet-networkplasma.desktop
            DESTINATION ${SERVICES_INSTALL_DIR})
    

    Über google habe ich set(QT_USE_QTNETWORK TRUE) gefunden, aber das änder nichts.

    Wie kann ich hier dafür sorgen, dass es gegen die richtigen Libs linkt?

    Gruß,
    Phil



  • wenn du mit qtcreator ein projekt anlegst sollte das ja schon von sich aus funktionieren, sofern du natürlich die richtigen komponenten ausgewählt hast.

    Ich würde es auf jeden fall mal mit dem creator versuchen. Das ist wahrscheinlich das einfachste.



  • Set(QT_USE_QTNETWORK)



  • gelöst.
    Muss {QT_QTNETWORK_LIBRARY} im String
    target_link_libraries(plasma_applet_networkplasma ${KDE4_PLASMA_LIBS} ${KDE4_KDEUI_LIBS})
    hinzufügen, dann klappts.



  • PhilippM schrieb:

    gelöst.
    Muss {QT_QTNETWORK_LIBRARY} im String
    target_link_libraries(plasma_applet_networkplasma ${KDE4_PLASMA_LIBS} ${KDE4_KDEUI_LIBS})
    hinzufügen, dann klappts.

    Das ist aber nur die halbe Lösung!
    Wofür gibt es eine umfassende Doku?
    Daraus 1:1

    find_package(Qt4 4.4.3 COMPONENTS QtCore QtGui QtXml REQUIRED )
       include(${QT_USE_FILE})
       add_executable(myexe main.cpp)
       target_link_libraries(myexe ${QT_LIBRARIES})
    

    Da du aber nicht Qt4 suchst sondern kde4, bleibt dir nur das setzen (wie oben beschrieben) und includen des QT_USE_FILE.


Anmelden zum Antworten