Announcement

Collapse
No announcement yet.

cmake: problem beim durchlinken....

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • cmake: problem beim durchlinken....

    Hallo, ich bin neu in diesem Forum (und mit cmake kenn ich mich auch nicht so gut aus) und habe auch gleich ein recht nerviges Problem.
    Also ich habe folgende Verzeichnisstruktur:
    /Kde-plugin
    /Kde-plugin/lib1
    /Kde-plugin/lib1/lib2

    dabei benötigt das kde-plugin die lib 1 und die lib 1 benötigt die lib 2!
    aus diesem grund habe ich in jedem Ordner eine CMakeLists.txt gepackt. Bei lib 2 sieht die noch so aus:
    edit:
    GRÜN LÄUFT, ORANGE hat wohl ne Macke.
    Code:
    # Project Needs a name ofcourse
    project(backend)
    cmake_minimum_required(VERSION 2.6)
    
    # source files for zlib
    SET(BACKEND_SRCS ${BACKEND_SRCS}
       blahblah blah
    )
    
    ADD_LIBRARY(backend_shared ${BACKEND_SRCS})
    Ich denke die funktioniert auch.
    Bei der lib1 habe ich bei einem Kde-Projekt abgekupfert und benutze praktisch die erste CMakeLists wieder.
    Code:
    # Project Needs a name ofcourse
    project(smartdimmer)
    cmake_minimum_required(VERSION 2.6)
    
    include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/backend )
    
    add_subdirectory( backend )
    
    # source files for zlib
    SET(SMARTD_SRCS ${SMARTD_SRCS}
       smartdimmer.c
    )
    
    ADD_LIBRARY(smartdimmer_shared ${SMARTD_SRCS})
    target_link_libraries(smartdimmer_shared libbackend_shared) 
    Scheint eigentlich auch zu funktionieren und läuft durch....
    Nun versuche ich allerdings krampfhaft das mit dem CMakeLists-File im root-ordner zum laufen zu bringen. Es soll im Prinzip das Selbe wie im vorangegangenen Schritt getan werden. Also die lib 1 soll die lib2 übersetzen etc...
    Das ist mein bisheriger entwurf, aber wenn ich die Kde-libs dazupacke wird anscheinend die buildroutine der unterordner nicht aufgerufen und ich erhalte diesen Fehler.
    Code:
    Linking CXX shared module lib/plasma_applet_tutorial1.so
    /usr/lib/gcc/i586-suse-linux/4.3/../../../../i586-suse-linux/bin/ld: cannot find -llibsmartdimmer_shared
    collect2: ld returned 1 exit status
    make[2]: *** [lib/plasma_applet_tutorial1.so] Fehler 1
    make[1]: *** [CMakeFiles/plasma_applet_tutorial1.dir/all] Fehler 2
    make: *** [all] Fehler 2
    das ist mein bisheriger CMakeLists.txt-Entwurf.
    Code:
    # Project Needs a name ofcourse
    project(plasma-tutorial1)
    
    cmake_minimum_required(VERSION 2.6)
    
    # Find the required Libaries
    find_package(KDE4 REQUIRED)
    include(KDE4Defaults)
    find_package(Plasma REQUIRED)
     
    add_definitions (${QT_DEFINITIONS} ${KDE4_DEFINITIONS})
    
    include_directories(
       ${CMAKE_CURRENT_SOURCE_DIR}/smartdimmer
       ${KDE4_INCLUDES}
    )
    # We add our source code here
    set(tutorial1_SRCS plasma-tutorial1.cpp PopUp.cpp)
     
    # Now make sure all files get to the right place
    kde4_add_plugin(plasma_applet_tutorial1 ${tutorial1_SRCS})
    
    add_subdirectory( smartdimmer )
    
    target_link_libraries(plasma_applet_tutorial1 libsmartdimmer_shared
                          ${PLASMA_LIBS} ${KDE4_KDEUI_LIBS})
     
    install(TARGETS plasma_applet_tutorial1
            DESTINATION ${PLUGIN_INSTALL_DIR})
     
    install(FILES plasma-applet-tutorial1.desktop
            DESTINATION ${SERVICES_INSTALL_DIR}) 
    Ich habe nun ein recht nettes KDE-Plugin für Notebooks fast fertig und scheitere an so einer dummen CMAKE-Linkaktion ):
    Allerdings bin ich auch kein Informatiker...
    Zuletzt editiert von dgrat; 30.09.2008, 23:20.

  • #2
    Liegt die ausbleibende Antwort am Beitragsstil? Wenn jemand fragen hat oder das Projekt will, schicke ich es gerne zu.
    Im Prinzip ist das Problem sicher nicht soo schwer zu lösen. Es beschränkt sich (vorerst) auf eine Frage.
    Warum werden die Unterordner nur bearbeitet, wenn ich den kompletten KDE-Kram rauslasse?!

    Comment

    Working...
    X