function(cache_internal_init_unique VAR_NAME) if(NOT ARGN) message(SEND_ERROR "Error: cache_internal_init_unique() called without any elements") return() endif() set(${VAR_NAME}) foreach(ELEMENT ${ARGN}) list(APPEND ${VAR_NAME} ${ELEMENT}) endforeach() list(REMOVE_DUPLICATES ${VAR_NAME}) set(${VAR_NAME} ${${VAR_NAME}} CACHE INTERNAL "") endfunction() # This function appends items to a CACHE INTERNAL variable # and removes duplicates # Example usage: # cache_internal_append_unique(MY_VARIABLE ${CMAKE_CURRENT_BINARY_DIR}) function(cache_internal_append_unique VAR_NAME) if(NOT ARGN) message(SEND_ERROR "Error: cache_internal_append_unique() called without any elements") return() endif() foreach(ELEMENT ${ARGN}) list(APPEND ${VAR_NAME} ${ELEMENT}) endforeach() list(REMOVE_DUPLICATES ${VAR_NAME}) set(${VAR_NAME} ${${VAR_NAME}} CACHE INTERNAL "") endfunction() function(cache_internal_remove_duplicates VAR_NAME) list(REMOVE_DUPLICATES ${VAR_NAME}) set(${VAR_NAME} ${${VAR_NAME}} CACHE INTERNAL "") endfunction()