Skip to content

Commit c877c1e

Browse files
Merge pull request #625 from novelrt/fix/cmake-resource-configure
Use a build-time command to copy the resources instead
2 parents 8f9f89f + 2032540 commit c877c1e

File tree

3 files changed

+27
-5
lines changed

3 files changed

+27
-5
lines changed

Samples/Experimental/ImGui/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ NovelRTBuildSystem_DeclareModule(EXECUTABLE NovelRT::Samples::Experimental::ImGu
1313
main.cpp
1414

1515
RESOURCES
16-
PUBLIC
16+
PRIVATE
1717
Resources/Fonts/Raleway-Regular.ttf
1818
Resources/Shaders/imgui_frag.spv
1919
Resources/Shaders/imgui_vert.spv

Samples/Experimental/VulkanRender/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ NovelRTBuildSystem_DeclareModule(EXECUTABLE NovelRT::Samples::Experimental::Vulk
1111
main.cpp
1212

1313
RESOURCES
14-
PUBLIC
14+
PRIVATE
1515
Resources/Shaders/vulkanrenderfrag.spv
1616
Resources/Shaders/vulkanrendervert.spv
1717
)

cmake/NovelRTBuildSystem.cmake

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,13 @@ function(NovelRTBuildSystem_DeclareModule moduleKind moduleName)
105105

106106
set(resx ${declareModule_RESOURCES_INTERFACE} ${declareModule_RESOURCES_PUBLIC} ${declareModule_RESOURCES_PRIVATE})
107107
foreach(file IN LISTS resx)
108-
configure_file(${file} ${file} COPYONLY)
108+
# Copy the resources to their output directory. In the future we may do something more advanced like compiling shaders.
109+
add_custom_command(
110+
OUTPUT ${file}
111+
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/${file}" "$<TARGET_FILE_DIR:${cmakeSafeName}>/${file}"
112+
MAIN_DEPENDENCY ${file}
113+
COMMENT "Copying resource ${file}"
114+
DEPENDS_EXPLICIT_ONLY)
109115
endforeach()
110116

111117
list(TRANSFORM declareModule_RESOURCES_INTERFACE REPLACE "^(.+)$" "$<BUILD_INTERFACE:\\1>")
@@ -127,7 +133,20 @@ function(NovelRTBuildSystem_DeclareModule moduleKind moduleName)
127133
PRIVATE FILE_SET private_headers
128134
TYPE HEADERS
129135
BASE_DIRS include ${declareModule_HEADERS_BASE_DIRS}
130-
FILES ${declareModule_HEADERS_PRIVATE})
136+
FILES ${declareModule_HEADERS_PRIVATE}
137+
138+
INTERFACE FILE_SET interface_resources
139+
TYPE HEADERS
140+
BASE_DIRS Resources ${declareModule_RESOURCES_BASE_DIRS}
141+
FILES ${declareModule_RESOURCES_INTERFACE}
142+
PUBLIC FILE_SET public_resources
143+
TYPE HEADERS
144+
BASE_DIRS Resources ${declareModule_RESOURCES_BASE_DIRS}
145+
FILES ${declareModule_RESOURCES_PUBLIC}
146+
PRIVATE FILE_SET private_resources
147+
TYPE HEADERS
148+
BASE_DIRS Resources ${declareModule_RESOURCES_BASE_DIRS}
149+
FILES ${declareModule_RESOURCES_PRIVATE})
131150

132151
target_link_libraries(${cmakeSafeName} PUBLIC ${declareModule_DEPENDS})
133152
foreach(depends IN LISTS declareModule_OPTIONAL_DEPENDS)
@@ -161,7 +180,10 @@ function(NovelRTBuildSystem_DeclareModule moduleKind moduleName)
161180
LIBRARY DESTINATION lib
162181
RUNTIME DESTINATION bin
163182
FILE_SET interface_headers DESTINATION include
164-
FILE_SET public_headers DESTINATION include)
183+
FILE_SET public_headers DESTINATION include
184+
185+
FILE_SET interface_resources DESTINATION bin
186+
FILE_SET public_resources DESTINATION bin)
165187
endfunction()
166188

167189
endblock()

0 commit comments

Comments
 (0)