cmake_minimum_required(VERSION 3.6) project(MY_APP CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # Определение путей set(SOURCE_RES_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../../resources") set(TARGET_RES_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../src/main/assets/resources") # Получаем список всех файлов в исходной директории для отслеживания зависимостей file(GLOB_RECURSE RES_FILES RELATIVE "${SOURCE_RES_DIR}" "${SOURCE_RES_DIR}/*") set(COPY_COMMANDS "") foreach(RES_FILE ${RES_FILES}) set(SRC "${SOURCE_RES_DIR}/${RES_FILE}") set(DST "${TARGET_RES_DIR}/${RES_FILE}") # Команда копирования конкретного файла, если он изменился add_custom_command( OUTPUT "${DST}" COMMAND ${CMAKE_COMMAND} -E make_directory "${TARGET_RES_DIR}" COMMAND ${CMAKE_COMMAND} -E copy_if_different "${SRC}" "${DST}" DEPENDS "${SRC}" COMMENT "Syncing resource: ${RES_FILE}" ) list(APPEND RES_OUTPUTS "${DST}") endforeach() # Создаем кастомную цель, которая будет запускать процесс копирования add_custom_target(sync_resources ALL DEPENDS ${RES_OUTPUTS}) add_library(main SHARED SDL_android_main.c ../../../../src/BoneAnimatedModel.cpp ../../../../src/Environment.cpp ../../../../src/Game.cpp ../../../../src/main.cpp ../../../../src/Projectile.cpp ../../../../src/SparkEmitter.cpp ../../../../src/TextModel.cpp ../../../../src/UiManager.cpp ../../../../src/utils/Perlin.cpp ../../../../src/utils/TaskManager.cpp ../../../../src/utils/Utils.cpp ../../../../src/planet/PlanetData.cpp ../../../../src/planet/PlanetObject.cpp ../../../../src/planet/StoneObject.cpp ../../../../src/render/FrameBuffer.cpp ../../../../src/render/Renderer.cpp ../../../../src/render/ShaderManager.cpp ../../../../src/render/TextureManager.cpp ../../../../src/render/OpenGlExtensions.cpp ) # Подключаем заголовки target_include_directories(main PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../SDL/include ${CMAKE_CURRENT_SOURCE_DIR}/../zlib ${CMAKE_CURRENT_SOURCE_DIR}/../libpng ${CMAKE_CURRENT_SOURCE_DIR}/../../../../thirdparty/eigen-5.0.0 ${CMAKE_CURRENT_SOURCE_DIR}/../../../../thirdparty/boost_1_90_0 ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src ${CMAKE_CURRENT_SOURCE_DIR}/../libzip ) # ВАЖНО: Линкуемся с png_static (статика) или png_shared (динамика) # Так как мы установили PNG_STATIC=ON и PNG_SHARED=OFF, # должна создаться цель png_static target_link_libraries(main png_static # ← ЭТО ПРАВИЛЬНОЕ ИМЯ ЦЕЛИ! z SDL2 ) find_library(OPENGLES2_LIB GLESv2) target_link_libraries(main ${OPENGLES2_LIB} # OpenGL ES 2.0/3.0 log android OpenSLES dl zip ) add_dependencies(main sync_resources)