[CMAKE] Unterprojekt als Shared Library linken
-
Mahlzeit, ich versuche gerade ein CMake-Projekt zusammen zu basteln. Soweit funktioniert es, nur weiß ich nicht so recht, wie ich ein Unterprojekt als Shared Library linken kann. Bis jetzt werden die Dateien im common - Verzeichnis für jedes weitere Unterprojekt extra übersetzt.
Ich habe schonmal etwas mit dem target_link_libraries Makro in der CMakeLists.txt im cpu-Verzeichnis rumgespielt, aber ich weiß nicht so wirklich, welche Variable ich dort einsetzen soll bzw. wie ich das common Target überhaupt den restlichen Projekten bekannt machen kann. Außerdem konnte ich dort unsinnige Variablen einsetzten, ohne dass sich CMake beschwert hätte^^
Wäre nett, wenn mal jemand drüber schauen könnte!
Verzeichnisstruktur:
-
truemon // Hauptprojekt
-
src
-
common // Unterprojekt (soll als Shared Lib zum Rest gelinkt werden)
-
cpu // Unterprojekt, was auf common zugreifen soll
Meine CMakeLists:
CMakeLists.txt in truemon
cmake_minimum_required(VERSION 2.6) project(TRUEMON) find_package(KDE4 REQUIRED) include(KDE4Defaults) include(MacroLibrary) set(CMAKE_BINARY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/build) set(LIBRARY_OUTPUT_DIR ${CMAKE_BINARY_DIR}) include_directories( #${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${KDE4_INCLUDES} ) add_subdirectory(src)
CMakeLists.txt in src
set(TRUEMON_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/common) include_directories( ${TRUEMON_INCLUDES}) add_subdirectory(common) add_subdirectory(cpu)
CMakeLists.txt in common
project(truemon-common) #include_directories( # ${CMAKE_CURRENT_SOURE_DIR} # ${CMAKE_BINARY_DIR} #) set(TRUEMON_COMMON_SRCS sensor.cpp ) kde4_add_library(truemon-common ${TRUEMON_COMMON_SRCS})
CMakeLists.txt in cpu
project(truemon-cpu) set(TRUEMON_CPU_SRCS truemon.cpp #sensor.cpp ) kde4_add_plugin(truemon-cpu ${TRUEMON_CPU_SRCS}) target_link_libraries(truemon-cpu ${KDE4_PLASMA_LIBS} ${KDE4_KDEUI_LIBS} ) install(TARGETS truemon-cpu DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES truemon-cpu.desktop DESTINATION ${SERVICES_INSTALL_DIR})
-