# 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)