cmake_minimum_required(VERSION 3.23) project(meowcraft) set(CMAKE_CXX_STANDARD 17) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) find_package(glfw3 3.3 REQUIRED) find_package(GLEW REQUIRED) if (LINUX) find_package(OpenGL REQUIRED) endif (LINUX) add_executable(meowcraft src/main.cpp src/GFX/Window.cpp src/GFX/Window.hpp src/GFX/Mesh.cpp src/GFX/Mesh.hpp src/Math/Vector.hpp src/Math/Common.hpp src/GFX/Binder.cpp src/GFX/Binder.hpp src/GFX/Shading/Shader.cpp src/GFX/Shading/Shader.hpp src/GFX/Shading/Program.cpp src/GFX/Shading/Program.hpp src/Math/Matrix.hpp src/Math/MVP.cpp src/Math/MVP.hpp src/GFX/Camera.cpp src/GFX/Camera.hpp src/Math/Rotation.hpp src/GFX/Shading/Uniform.cpp src/GFX/Shading/Uniform.hpp src/GFX/Mouse.cpp src/GFX/Mouse.hpp src/Math/Trig.hpp src/GFX/Texture.cpp src/GFX/Texture.hpp src/Assets.cpp src/Assets.hpp src/GFX/Image/RawImage.cpp src/GFX/Image/RawImage.hpp src/GFX/Image/PPMParser.cpp src/GFX/Image/PPMParser.hpp src/World/Chunk.cpp src/World/Chunk.hpp src/World/BlockType.hpp src/World/Generation/Generator.cpp src/World/Generation/Generator.hpp src/World/BlockSide.hpp src/World/World.cpp src/World/World.hpp src/World/ChunkIndex.hpp src/Util/ImageViewer.cpp src/Util/ImageViewer.hpp src/Math/Interpolation.cpp src/Math/Grid.cpp src/Math/Perlin.cpp src/Compute/Queue.hpp src/Math/Constants.hpp src/Math/Sigmoid.hpp src/World/Generation/ChunkMeshing.cpp src/World/Generation/ChunkMeshing.hpp src/Math/Tensor.hpp src/World/Generation/Decoration.cpp src/World/Generation/Decoration.hpp src/Math/Random.cpp src/Math/Random.hpp ) target_link_libraries(meowcraft glfw GLEW::GLEW) if (LINUX) target_link_libraries(meowcraft OpenGL) endif (LINUX) function(make_includable input_file output_file) file(READ ${input_file} content) set(delim "for_c++_include") set(content "R\"${delim}(\n${content})${delim}\"") file(WRITE ${output_file} "${content}") endfunction(make_includable) make_includable(assets/shaders/fragment.glsl assets/generated/shaders/fragment.glsl.includable) make_includable(assets/shaders/vertex.glsl assets/generated/shaders/vertex.glsl.includable) make_includable(assets/images/atlas.ppm assets/generated/images/atlas.ppm.includable)