22 lines
		
	
	
		
			931 B
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			22 lines
		
	
	
		
			931 B
		
	
	
	
		
			CMake
		
	
	
	
	
	
| # Copyright (c) 2025 Dominic Masters
 | |
| # 
 | |
| # This software is released under the MIT License.
 | |
| # https://opensource.org/licenses/MIT
 | |
| 
 | |
| function(embed_file TARGET_NAME INPUT_FILE_ABS OUTPUT_FILE_HEADER C_VAR_NAME)
 | |
|   set(OUTPUT_FILE_ABS "${CMAKE_BINARY_DIR}/generated_headers/${OUTPUT_FILE_HEADER}")
 | |
| 
 | |
|   # Create a custom target
 | |
|   add_custom_target(
 | |
|     "${INPUT_FILE}_embed"
 | |
|     COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/generated_headers"
 | |
|     COMMAND ${CMAKE_COMMAND} -DINPUT_FILE="${INPUT_FILE_ABS}" -DOUTPUT_FILE="${OUTPUT_FILE_ABS}" -DC_VAR_NAME="${C_VAR_NAME}" -P "${TOOLS_DIR}/embed/embed.cmake"
 | |
|     DEPENDS "${INPUT_FILE_ABS}"
 | |
|   )
 | |
| 
 | |
|   # Add the generated header to the target's include directories
 | |
|   target_include_directories(${TARGET_NAME} PRIVATE "${CMAKE_BINARY_DIR}/generated_headers")
 | |
| 
 | |
|   # Make the target depend on the custom target
 | |
|   add_dependencies(${TARGET_NAME} "${INPUT_FILE}_embed")
 | |
| endfunction() |