@@ -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)
165187endfunction ()
166188
167189endblock()
0 commit comments