set(core_modules "modules/AlignedData.cppm" "modules/Array.cppm" "modules/Assert.cppm" "modules/ArrayList.cppm" "modules/BitArray.cppm" "modules/Box.cppm" "modules/Buffer.cppm" "modules/Clock.cppm" "modules/Color.cppm" "modules/Components.cppm" "modules/File.cppm" "modules/Frustum.cppm" "modules/HashMap.cppm" "modules/HashedString.cppm" "modules/List.cppm" "modules/Logger.cppm" "modules/Math.cppm" "modules/Matrix.cppm" "modules/Meta.cppm" "modules/New.cppm" "modules/Plane.cppm" "modules/Quaternion.cppm" "modules/Queue.cppm" "modules/Random.cppm" "modules/ReadLine.cppm" "modules/Std.cppm" "modules/StringFormat.cppm" "modules/StringJoin.cppm" "modules/Terminal.cppm" "modules/TerminalConstants.cppm" "modules/Test.cppm" "modules/Thread.cppm" "modules/ToString.cppm" "modules/Types.cppm" "modules/Unicode.cppm" "modules/UniquePointer.cppm" "modules/Utility.cppm" "modules/Vector.cppm" "modules/View.cppm" ) function(add_modules) cmake_parse_arguments(args "" "TARGET;NAME;PREFIX" "FILES" ${ARGN} ) if("${args_TARGET}" STREQUAL "") message( FATAL_ERROR "add_modules misses TARGET" ) endif() if("${args_NAME}" STREQUAL "") message( FATAL_ERROR "add_modules misses NAME" ) endif() list(TRANSFORM args_FILES PREPEND ${args_PREFIX}./) target_sources(${args_TARGET} PUBLIC FILE_SET ${args_NAME} TYPE CXX_MODULES BASE_DIRS ${args_PREFIX} FILES ${args_FILES} ) endfunction()