[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})
    

Log in to reply