пожете помочь с cmake?

В общем как я понял надо два cmake файла, один в главной директории, другой в исходниках. на этапе линковки становиться понятно, что библиотеки не линкуются, ну вроде понятно, как мне кажется. вот два файла.

src

cmake_minimum_required (VERSION 3.16)
project (game)
include_directories (/usr/include/freetype2)

add_executable (game
    main.cpp 
    game.cpp 
    gl_gl_3_3.cpp 
    scene-manager.cpp 
    scene.cpp 
    scene-load-start-menu.cpp 
    sprite.cpp 
    shader-proceed.cpp 
    animator.cpp 
    animate.cpp 
    actor.cpp 
    fontController.cpp 
    fontBuffer.cpp 
    button.cpp 
    sound-system.cpp 
    sound.cpp 
    language.cpp 
    isometric.cpp 
    tile.cpp 
    isometric-sprite.cpp 
    item-board.cpp 
    event-system.cpp 
    search-path.cpp 
    programmer.cpp 
    object-manager.cpp 
    item-refrigerator.cpp 
    item-door.cpp 
    human-manager.cpp 
    time-manager.cpp 
    task-manager.cpp 
    item-indoor-plant.cpp 
    palette.cpp 
    item-dinner-board.cpp 
    timer.cpp 
    scene-level-home.cpp 
    item-bed.cpp 
    item-cupboard.cpp 
    top-panel.cpp 
    clock-item-top-panel.cpp
    )

find_package (PkgConfig REQUIRED)

pkg_check_modules (SDL2 sdl2)
pkg_check_modules (GL gl)
pkg_check_modules (FREETYPE freetype2)
pkg_check_modules (OPENAL openal)
    
find_library (AUDIO audio /usr/lib/x86_64-linux-gnu/)
    
target_link_libraries (game PUBLIC ${SDL2} ${GL} ${FREETYPE} ${OPENAL} ${AUDIO} )

и в root каталоге.

cmake_minimum_required (VERSION 3.16)
project (game)

add_subdirectory (src)

find_package (PkgConfig REQUIRED)

pkg_check_modules (SDL2 sdl2)
pkg_check_modules (GL gl)
pkg_check_modules (FREETYPE freetype2)
pkg_check_modules (OPENAL openal)

find_library (AUDIO audio /usr/lib/x86_64-linux-gnu/)

target_link_libraries (game PUBLIC ${SDL2} ${GL} ${FREETYPE} ${OPENAL} ${AUDIO} )

вот пример ошибок

[ 97%] Building CXX object src/CMakeFiles/game.dir/clock-item-top-panel.cpp.o
[100%] Linking CXX executable game
/usr/bin/ld: CMakeFiles/game.dir/game.cpp.o: in function `Game::run()':
game.cpp:(.text+0x44): undefined reference to `SDL_Init'
/usr/bin/ld: game.cpp:(.text+0x55): undefined reference to `SDL_GetDesktopDisplayMode'
/usr/bin/ld: game.cpp:(.text+0x6d): undefined reference to `SDL_GL_SetAttribute'
/usr/bin/ld: game.cpp:(.text+0x7c): undefined reference to `SDL_GL_SetAttribute'
/usr/bin/ld: game.cpp:(.text+0x8b): undefined reference to `SDL_GL_SetAttribute'
/usr/bin/ld: game.cpp:(.text+0x9a): undefined reference to `SDL_GL_SetAttribute'
/usr/bin/ld: game.cpp:(.text+0xc7): undefined reference to `SDL_CreateWindow'
/usr/bin/ld: game.cpp:(.text+0xdd): undefined reference to `SDL_GL_CreateContext'
/usr/bin/ld: game.cpp:(.text+0x13e): undefined reference to `SDL_GL_SetSwapInterval'

Ответы (1 шт):

Автор решения: Aptem_f

вроде как надо

target_link_libraries (game ${SDL2_LIBRARIES} ...

в файнд макросах либ обычно есть инструкция подключения

советую написать добавление исходников по маске

file(GLOB SOURCE &{CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
add_executable(game ${SOURCE}

в рут сmake удали все что после add_subdirectory, а то дубляж

в src удали project()

→ Ссылка