rework(CMakeLists): rework file and add shader compilation

This commit is contained in:
2026-01-02 10:48:38 +01:00
parent 4831312f9e
commit 877da5aa5f

View File

@@ -1,55 +1,84 @@
cmake_minimum_required(VERSION 3.10) cmake_minimum_required(VERSION 3.10)
project(learnopengl) project(OpenGL_Minecraft)
set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD 23)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
file(GLOB_RECURSE CPP_SOURCES CONFIGURE_DEPENDS src/*.cpp) file(GLOB_RECURSE CPP_SOURCES CONFIGURE_DEPENDS "src/*.cpp" "src/**/*.cpp")
file(GLOB_RECURSE CPP_HEADERS CONFIGURE_DEPENDS src/*.hpp)
# GLAD (add C file)
list(APPEND CPP_SOURCES lib/glad/src/glad.c) list(APPEND CPP_SOURCES lib/glad/src/glad.c)
add_executable(main ${CPP_SOURCES} ${CPP_HEADERS})
# GLFW # find shader files
file(GLOB_RECURSE SHADERS CONFIGURE_DEPENDS
"res/**/*.frag"
"res/**/*.vert"
"res/**/*.glsl"
)
list(REMOVE_DUPLICATES SHADERS)
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/shaders)
set(SHADER_C_FILES)
foreach(SHADER ${SHADERS})
message(${SHADER})
get_filename_component(NAME_WE ${SHADER} NAME_WE)
get_filename_component(EXT ${SHADER} EXT)
string(REPLACE "." "_" EXT_SAFE ${EXT})
set(OUTPUT_C ${CMAKE_BINARY_DIR}/shaders/${NAME_WE}${EXT_SAFE}.c)
add_custom_command(
OUTPUT ${OUTPUT_C}
COMMAND python3
${CMAKE_SOURCE_DIR}/glsl2c.py
${SHADER}
${OUTPUT_C}
DEPENDS ${SHADER}
${CMAKE_SOURCE_DIR}/glsl2c.py
COMMENT "Converting shader ${SHADER} to CPP"
VERBATIM
)
list(APPEND SHADER_C_FILES ${OUTPUT_C})
endforeach()
add_executable(main ${CPP_SOURCES} ${SHADER_C_FILES})
add_definitions(-g)
target_include_directories(main PRIVATE
inc # project
res/render # ressources (primitive)
lib/glad/include # glad
lib/glfw/include # glfw
lib/glm # glm
lib/imgui # imgui
lib/stb # stb
)
# GLFW (remove all flags)
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE) set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE) set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
add_subdirectory(lib/glfw) add_subdirectory(lib/glfw)
# GLAD
target_include_directories(main PRIVATE lib/glad/include)
# GLM
target_include_directories(main PRIVATE lib/glm)
# STB
target_include_directories(main PRIVATE lib/stb)
target_include_directories(main PRIVATE inc/)
target_link_libraries(main PRIVATE glfw) target_link_libraries(main PRIVATE glfw)
# search for OpenGL libs
find_package(OpenGL REQUIRED) find_package(OpenGL REQUIRED)
target_link_libraries(main PRIVATE OpenGL::GL) target_link_libraries(main PRIVATE OpenGL::GL)
if(APPLE) # find OpenGL dependancies
target_link_libraries(main PRIVATE if(APPLE) # MacOS
"-framework Cocoa" target_link_libraries(main PRIVATE
"-framework IOKit" "-framework Cocoa" "-framework IOKit" "-framework CoreVideo"
"-framework CoreVideo" )
) elseif(WIN32) # Windows
elseif(WIN32) target_link_libraries(main PRIVATE
target_link_libraries(main PRIVATE opengl32 gdi32 user32 shell32
opengl32 )
gdi32 elseif(UNIX) # Most UNIX computer
user32 target_link_libraries(main PRIVATE
shell32 X11 pthread dl m
) )
elseif(UNIX) endif()
target_link_libraries(main PRIVATE
X11
pthread
dl
m
)
endif()