From e25d837bd2312f218818f216e1802800bc531d8c Mon Sep 17 00:00:00 2001 From: ohyzha Date: Mon, 22 Jul 2024 18:10:03 +0300 Subject: [PATCH] change output folder for generated files to build dir --- CMakeLists.txt | 10 ++++++---- Scripts/CompileShaders.sh | 4 +--- cmake/SetShaderDependency.cmake | 2 +- cmake/TryCompileShaders.cmake.in | 4 +++- openVulkanoCpp/Shader/ShaderRegistry.cpp | 2 +- 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9cf720b..1a02a9e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,8 +36,10 @@ if ("${BASH_EXECUTABLE}" STREQUAL "") set(BASH_EXECUTABLE ${BASH_PROGRAM} CACHE FILEPATH "Path to bash executable" FORCE) endif() set(ROOT_FOLDER ${CMAKE_CURRENT_SOURCE_DIR}) +set(SHADER_OUTPUT_DEST ${CMAKE_BINARY_DIR}/GeneratedShaderData) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/TryCompileShaders.cmake.in ${CMAKE_BINARY_DIR}/TryCompileShaders.cmake @ONLY) -execute_process(COMMAND ${BASH_EXECUTABLE} CompileShaders.sh WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Scripts) +execute_process(COMMAND ${BASH_EXECUTABLE} CompileShaders.sh "${SHADER_OUTPUT_DEST}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Scripts) +file(GLOB GENERATED_SHADER_SOURCES "${SHADER_OUTPUT_DEST}/*") if(IOS) set(CMAKE_Swift_LANGUAGE_VERSION 5.0) @@ -50,7 +52,7 @@ else() file(GLOB_RECURSE sources CONFIGURE_DEPENDS "openVulkanoCpp/*.h" "openVulkanoCpp/*.c" "openVulkanoCpp/*.hpp" "openVulkanoCpp/*.cpp" "examples/*.hpp" "examples/*.cpp") file(GLOB SHADER_SRC_FILES ${ROOT_FOLDER}/openVulkanoCpp/Shader/*) list(FILTER SHADER_SRC_FILES EXCLUDE REGEX ".*\\.(hpp|cpp)$") - add_executable(openVulkanoCpp examples/main.cpp ${SHADER_SRC_FILES}) + add_executable(openVulkanoCpp examples/main.cpp ${SHADER_SRC_FILES} ${GENERATED_SHADER_SOURCES}) if (MSVC) set_property(GLOBAL PROPERTY USE_FOLDERS ON) source_group("Shaders" FILES ${SHADER_SRC_FILES}) @@ -62,7 +64,7 @@ SetWarningSettings(openVulkanoCpp) set_property(TARGET openVulkanoCpp PROPERTY CXX_STANDARD 20) target_sources(openVulkanoCpp PRIVATE ${sources}) -target_include_directories(openVulkanoCpp PUBLIC openVulkanoCpp) +target_include_directories(openVulkanoCpp PUBLIC openVulkanoCpp ${SHADER_OUTPUT_DEST}) # Setup IOS if(IOS) @@ -98,7 +100,7 @@ endif () SetupVulkan(openVulkanoCpp) SetShaderDependency(openVulkanoCpp ${CMAKE_CURRENT_SOURCE_DIR}/openVulkanoCpp/Shader - ${CMAKE_CURRENT_SOURCE_DIR}/openVulkanoCpp/GeneratedShaderData) + ${SHADER_OUTPUT_DEST}) if (NOT ANDROID AND NOT IOS) target_link_libraries(openVulkanoCpp PRIVATE glfw pugixml) diff --git a/Scripts/CompileShaders.sh b/Scripts/CompileShaders.sh index 89a2b2b..110b161 100755 --- a/Scripts/CompileShaders.sh +++ b/Scripts/CompileShaders.sh @@ -10,7 +10,7 @@ if [[ "$(uname)" == "Darwin" ]]; then fi SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -GENERATED_DATA_PATH="$(dirname "$SCRIPT_DIR")/openVulkanoCpp/GeneratedShaderData" +GENERATED_DATA_PATH="$1" SHADER_PATH="$(dirname "$SCRIPT_DIR")/openVulkanoCpp/Shader" if [[ "$OSTYPE" == "msys" || "$OSTYPE" == "cygwin" ]]; then @@ -28,14 +28,12 @@ check_return_code() { } rm -f *.spv -#rm -f "$GENERATED_DATA_PATH"/* mkdir -p "$GENERATED_DATA_PATH" touch "$GENERATED_DATA_PATH"/GeneratedShaderData.h touch "$GENERATED_DATA_PATH"/GeneratedShaderData.c echo "// Auto generated file" > "$GENERATED_DATA_PATH"/GeneratedShaderData.h echo -e "#ifndef GeneratedShaderData_H_INCLUDED\n#define GeneratedShaderData_H_INCLUDED" >> "$GENERATED_DATA_PATH"/GeneratedShaderData.h -#echo -e "extern \"C\" {" >> "$GENERATED_DATA_PATH"/GeneratedShaderData.h echo -e "#include \"GeneratedShaderData.h\"" > "$GENERATED_DATA_PATH"/GeneratedShaderData.c # put data from all files with same name into single file diff --git a/cmake/SetShaderDependency.cmake b/cmake/SetShaderDependency.cmake index ff78b1a..f5b3c22 100644 --- a/cmake/SetShaderDependency.cmake +++ b/cmake/SetShaderDependency.cmake @@ -16,7 +16,7 @@ function(SetShaderDependency TARGET SHADER_SRC_FOLDER SHADER_OUTPUT_FOLDER) set(SHADER_EXPECTED_OUTPUT ${OUTPUT_HEADERS} ${OUTPUT_SOURCES}) add_custom_command(OUTPUT ${SHADER_EXPECTED_OUTPUT} - COMMAND ${CMAKE_COMMAND} -DROOT_FOLDER=${CMAKE_SOURCE_DIR} -P ${CMAKE_BINARY_DIR}/TryCompileShaders.cmake + COMMAND ${CMAKE_COMMAND} -P ${CMAKE_BINARY_DIR}/TryCompileShaders.cmake DEPENDS ${SHADER_SRC_FILES} COMMENT "Recompiling shaders") add_custom_target(RecompileShaders ALL diff --git a/cmake/TryCompileShaders.cmake.in b/cmake/TryCompileShaders.cmake.in index fb957bc..e294456 100644 --- a/cmake/TryCompileShaders.cmake.in +++ b/cmake/TryCompileShaders.cmake.in @@ -1,4 +1,6 @@ -execute_process(COMMAND "@BASH_EXECUTABLE@" CompileShaders.sh WORKING_DIRECTORY "@ROOT_FOLDER@/Scripts" RESULT_VARIABLE res_var) +execute_process(COMMAND "@BASH_EXECUTABLE@" CompileShaders.sh "@SHADER_OUTPUT_DEST@" + WORKING_DIRECTORY "@ROOT_FOLDER@/Scripts" + RESULT_VARIABLE res_var) if(NOT "${res_var}" STREQUAL "0") message(FATAL_ERROR "Failed to recompile shaders") endif() diff --git a/openVulkanoCpp/Shader/ShaderRegistry.cpp b/openVulkanoCpp/Shader/ShaderRegistry.cpp index 0438f30..7dadd33 100644 --- a/openVulkanoCpp/Shader/ShaderRegistry.cpp +++ b/openVulkanoCpp/Shader/ShaderRegistry.cpp @@ -9,7 +9,7 @@ extern "C" { -#include "GeneratedShaderData/GeneratedShaderData.h" +#include "GeneratedShaderData.h" } namespace OpenVulkano