NothinFancy/NothinFancy/CMakeLists.txt
2025-02-11 18:01:43 -06:00

45 lines
1.9 KiB
CMake

# NF library CMakeLists.txt
add_library(NothinFancy STATIC "src/Engine.cpp" "src/include/nf.h" "src/pch.h" "src/util.h" "src/util/log.h" "src/util/log.cpp" "src/include/nf/config.h" "src/util/util.cpp" "src/util/file.h" "src/util/file.cpp" "src/client/Client.h" "src/client/Client.cpp" "src/client/Window.h" "src/client/Window.cpp" "src/client/render/RenderEngine.h" "src/client/render/RenderEngine.cpp" "src/client/render/ShaderModule.h" "src/client/render/ShaderModule.cpp")
# Use C++20
set_property(TARGET NothinFancy PROPERTY CXX_STANDARD 20)
# Additional include directories
target_include_directories(NothinFancy PUBLIC "src" "src/include")
# Use precompiled header
target_precompile_headers(NothinFancy PUBLIC "src/pch.h")
# Link libraries
target_link_libraries(NothinFancy "$ENV{VULKAN_SDK}/Lib/vulkan-1.lib")
target_include_directories(NothinFancy PUBLIC "$ENV{VULKAN_SDK}/Include")
# Generate version.h
find_package(Git)
execute_process(COMMAND ${GIT_EXECUTABLE} describe OUTPUT_VARIABLE NFVERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
configure_file(src/version.h.in version.h)
target_include_directories(NothinFancy PUBLIC "${PROJECT_BINARY_DIR}/NothinFancy")
# Compile shaders
set(GLSLANG "$ENV{VULKAN_SDK}/Bin/glslang.exe")
set(SHADER_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/NothinFancy/shaders")
file(GLOB_RECURSE SHADER_SOURCES "res/shaders/*.glsl")
foreach(SHADER_SOURCE ${SHADER_SOURCES})
get_filename_component(FILENAME ${SHADER_SOURCE} NAME)
set(SHADER_BINARY "${SHADER_OUTPUT_DIRECTORY}/${FILENAME}.spv")
add_custom_command(
OUTPUT ${SHADER_BINARY}
COMMAND ${CMAKE_COMMAND} -E make_directory "${SHADER_OUTPUT_DIRECTORY}"
COMMAND ${GLSLANG} -V ${SHADER_SOURCE} -o ${SHADER_BINARY}
DEPENDS ${SHADER_SOURCE}
)
list(APPEND SHADER_BINARIES ${SHADER_BINARY})
endforeach(SHADER_SOURCE)
add_custom_target(
Shaders
DEPENDS ${SHADER_BINARIES}
)
add_dependencies(NothinFancy Shaders)