Skip to content

Commit f50c349

Browse files
authored
Fix CMake build rule for resource installation (#2687)
## Issue The post build step for MaterialXTest does no trigger so resources are not copied to the build area on a build. This means developers must manually copy this over when they are changing any files affecting the resources folder. If the lack of copy is not noticed / done then it can get confusing as to why source changes are not reflected in the build tests. ## Change Add an explicit target for resource copy and make MaterialXTest dependeng on it.
1 parent e9cefcc commit f50c349

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

source/MaterialXTest/CMakeLists.txt

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -110,13 +110,22 @@ if(MATERIALX_BUILD_GEN_MDL)
110110
DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${MATERIALX_INSTALL_STDLIB_PATH}/mdl)
111111
endif()
112112

113-
add_custom_command(TARGET MaterialXTest POST_BUILD
114-
COMMAND ${CMAKE_COMMAND} -E copy_directory
115-
${CMAKE_CURRENT_SOURCE_DIR}/../../resources ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/resources)
113+
# Copy resources to build directory - always runs during build
114+
add_custom_target(MaterialXTestResources ALL
115+
COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different
116+
${CMAKE_CURRENT_SOURCE_DIR}/../../resources ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/resources
117+
COMMENT "Copying resources to build directory")
118+
119+
# Copy OSL utilities to build directory - always runs during build
120+
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/MaterialXRenderOsl/Utilities")
121+
add_custom_target(MaterialXTestOslUtilities ALL
122+
COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different
123+
${CMAKE_CURRENT_SOURCE_DIR}/MaterialXRenderOsl/Utilities ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/resources/Utilities
124+
COMMENT "Copying OSL utilities to build directory")
125+
add_dependencies(MaterialXTestResources MaterialXTestOslUtilities)
126+
endif()
116127

117-
add_custom_command(TARGET MaterialXTest POST_BUILD
118-
COMMAND ${CMAKE_COMMAND} -E copy_directory
119-
${CMAKE_CURRENT_SOURCE_DIR}/MaterialXRenderOsl/Utilities ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/resources/Utilities)
128+
add_dependencies(MaterialXTest MaterialXTestResources)
120129

121130
set_target_properties(
122131
MaterialXTest PROPERTIES

0 commit comments

Comments
 (0)