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.
Ich denke die funktioniert auch.
Bei der lib1 habe ich bei einem Kde-Projekt abgekupfert und benutze praktisch die erste CMakeLists wieder.
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.
das ist mein bisheriger CMakeLists.txt-Entwurf.
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...
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})
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)
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
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})
Allerdings bin ich auch kein Informatiker...
Comment