cmake_minimum_required(VERSION 3.23) # TODO1: Implement MacroAppend macro(MacroAppend ListVar Value) endmacro() # TODO2: Call MacroAppend, then return the value from FuncAppend function(FuncAppend ListVar Value) endfunction() # Testing for the above, final expected value is "Alpha;Beta;Gamma;Delta" if(SKIP_TESTS) return() endif() set(Original "Beta;Gamma") set(Expected "Alpha;Beta;Gamma;Delta") set(BeginList ${Original}) set(EndList "Alpha") MacroAppend(BeginList "Delta") foreach(value IN LISTS BeginList) MacroAppend(EndList ${value}) endforeach() if(BeginList STREQUAL Original) message("MacroAppend unimplemented or did nothing") elseif(NOT EndList STREQUAL Expected) message(WARNING "MacroAppend error, final value: ${EndList}") else() message("MacroAppend correct") endif() set(BeginList ${Original}) set(EndList "Alpha") FuncAppend(BeginList "Delta") foreach(value IN LISTS BeginList) FuncAppend(EndList ${value}) endforeach() if(BeginList STREQUAL Original) message("FuncAppend unimplemented or did nothing") elseif(NOT EndList STREQUAL Expected) message(WARNING "FuncAppend error, final value: ${EndList}") else() message("FuncAppend correct") endif() # Bonus Tests FuncAppend(UndefinedList "Test") set(EmptyList "") FuncAppend(EmptyList "Test") set(FalseList "False") FuncAppend(FalseList "Test") if( (UndefinedList STREQUAL "Test") AND (EmptyList STREQUAL "Test") AND (FalseList STREQUAL "False;Test") ) message("You implemented the empty list case, well done!") endif()