пожете помочь с 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()