cmake_minimum_required(VERSION 3.21) project(MinecraftPE) include(cmake/CPM.cmake) CPMAddPackage("gh:madler/zlib@1.3.2") CPMAddPackage( NAME "libpng" GIT_REPOSITORY "https://github.com/pnggroup/libpng.git" GIT_TAG "v1.6.55" OPTIONS "ZLIB_ROOT ${zlib_SOURCE_DIR}" "ZLIB_INCLUDE_DIRS ${zlib_SOURCE_DIR}" "PNG_TOOLS OFF" "PNG_TESTS OFF" "BUILD_SHARED_LIBS ON" ) CPMAddPackage( NAME "openal" GIT_REPOSITORY "https://github.com/kcat/openal-soft.git" GIT_TAG "1.25.1" OPTIONS "ALSOFT_EXAMPLES OFF" "ALSOFT_TESTS OFF" "ALSOFT_UTILS OFF" "BUILD_SHARED_LIBS ON" ) CPMAddPackage( NAME "glfw" GIT_REPOSITORY "https://github.com/glfw/glfw.git" GIT_TAG "3.4" OPTIONS "GLFW_BUILD_EXAMPLES OFF" "GLFW_BUILD_TESTS OFF" "GLFW_BUILD_DOCS OFF" "BUILD_SHARED_LIBS ON" ) file(GLOB SOURCES "src/client/*.cpp" "src/client/gamemode/*.cpp" "src/client/gui/*.cpp" "src/client/gui/components/*.cpp" "src/client/gui/screens/*.cpp" "src/client/gui/screens/crafting/*.cpp" "src/client/gui/screens/touch/*.cpp" "src/client/model/*.cpp" "src/client/model/geom/*.cpp" "src/client/particle/*.cpp" "src/client/player/*.cpp" "src/client/player/input/*.cpp" "src/client/player/input/touchscreen/*.cpp" "src/client/renderer/*.cpp" "src/client/renderer/culling/*.cpp" "src/client/renderer/entity/*.cpp" "src/client/renderer/ptexture/*.cpp" "src/client/renderer/tileentity/*.cpp" "src/client/sound/*.cpp" "src/locale/*.cpp" "src/nbt/*.cpp" "src/network/*.cpp" "src/network/command/*.cpp" "src/platform/*.cpp" "src/platform/audio/SoundSystemAL.cpp" "src/platform/input/*.cpp" "src/raknet/**.cpp" "src/server/**.cpp" "src/util/**.cpp" "src/world/*.cpp" "src/world/phys/*.cpp" "src/world/entity/*.cpp" "src/world/entity/ai/control/*.cpp" "src/world/entity/animal/*.cpp" "src/world/entity/item/*.cpp" "src/world/entity/monster/*.cpp" "src/world/entity/player/*.cpp" "src/world/entity/projectile/*.cpp" "src/world/food/*.cpp" "src/world/inventory/*.cpp" "src/world/item/*.cpp" "src/world/item/crafting/*.cpp" "src/world/level/*.cpp" "src/world/level/biome/*.cpp" "src/world/level/chunk/*.cpp" "src/world/level/dimension/*.cpp" "src/world/level/levelgen/*.cpp" "src/world/level/levelgen/feature/*.cpp" "src/world/level/levelgen/synth/*.cpp" "src/world/level/material/*.cpp" "src/world/level/pathfinder/*.cpp" "src/world/level/storage/*.cpp" "src/world/level/tile/*.cpp" "src/world/level/tile/entity/*.cpp" "src/SharedConstants.cpp" "src/main.cpp" "src/NinecraftApp.cpp" ) add_executable(${PROJECT_NAME} ${SOURCES} #TODO: if PLATFORM=PLATFORM_GLFW "src/AppPlatform_glfw.cpp" "glad/src/glad.c" ) target_include_directories(${PROJECT_NAME} PUBLIC "${CMAKE_SOURCE_DIR}/glad/include/" "${CMAKE_SOURCE_DIR}/src" "${openal_SOURCE_DIR}/include" "${glfw_SOURCE_DIR}/include" "lib/include" ) target_compile_definitions(${PROJECT_NAME} PUBLIC "OPENGL_ES" "NO_EGL" "_CRT_SECURE_NO_WARNINGS" "PLATFORM_GLFW") # TODO: add ws2_32 lib if windows # TODO: fix openal linking for windows target_link_libraries(${PROJECT_NAME} zlib png_shared alsoft.common OpenAL glfw) if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Linux") add_custom_command( TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $ $ COMMAND_EXPAND_LISTS ) endif() add_custom_command( TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_SOURCE_DIR}/data" $/data )