CMake Projekt mit Unterverzeichnissen



  • Da ich mehrere Dateien in meinem Projekt verwenden möchte, bin ich gerade dabei Unterverzeichnisse einzurichten. Was garnicht so einfach zu sein scheint.

    Ich habe jetzt ein Verzeichnis im Projekt das sich person nennt. Darin liegt die Klasse player.

    Meine CMakeFiles sehen so aus

    CMakeLists.txt

    project(Kaipan)
    cmake_minimum_required(VERSION 2.8)
    aux_source_directory(. SRC_LIST)
    
    #Person
    include_directories(${CMAKE_CURRENT_SOURCE_DIR}/person)
    add_subdirectory(person)
    
    add_executable(${PROJECT_NAME} ${SRC_LIST})
    
    target_link_libraries(PERSON)
    

    person/CMakeLists.txt

    project(Kaipan)
    add_library(PERSON player.cpp)
    
    target_include_directories(PERSON PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
    

    nur kriege ich aber, wenn ich die Klasse erzeugen will, den Fehler

    /home/ben/QtProjects/Kaipan/application.cpp:-1: Fehler: undefined reference to `Player::Player()'
    

    irgendwie scheint er die Klasse nicht zu linken, aber was habe ich denn falsch gemacht? Hab schon im Internet gesucht, aber keine Lösung gefunden.



  • Bennisen schrieb:

    irgendwie scheint er die Klasse nicht zu linken

    Du gibst ja auch nicht an das er deine Executable und deine Lib zusammen linken soll. Schau dir mal an was target_link_libraries für Parameter hat und was du übergibst.



  • Tobiking2 schrieb:

    Bennisen schrieb:

    irgendwie scheint er die Klasse nicht zu linken

    Du gibst ja auch nicht an das er deine Executable und deine Lib zusammen linken soll. Schau dir mal an was target_link_libraries für Parameter hat und was du übergibst.

    Stimmt, hab ich total vergessen.

    Lösung ist das hier: target_link_libraries(${PROJECT_NAME} PERSON)


Log in to reply