function(GenerateTriplet OUTPUT_VARIABLE) # Determine system architecture if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm|aarch)64$") set(ARCH "arm64") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm|aarch).*") set(ARCH "arm") elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) set(ARCH "x64") elseif(CMAKE_SIZEOF_VOID_P EQUAL 4) set(ARCH "x86") else() message(FATAL_ERROR "Unsupported architecture") return() endif() # Determine OS and create vcpkg-compatible triplet if(WIN32) # Windows triplets: x64-windows, x64-windows-static, x64-windows-dynamic if(BUILD_SHARED_LIBS) set(TRIPLET "${ARCH}-windows-dynamic") else() set(TRIPLET "${ARCH}-windows-static") endif() elseif(APPLE) if (IOS) set(TRIPLET "${ARCH}-ios") else () # macOS triplets: x64-osx, arm64-osx set(TRIPLET "${ARCH}-osx") endif () elseif(UNIX) # Linux triplets: x64-linux, arm64-linux set(TRIPLET "${ARCH}-linux") else() message(FATAL_ERROR "Unsupported operating system") return() endif() message(STATUS "Generated vcpkg-compatible triplet: ${TRIPLET}") # Set the output variable in the parent scope set(${OUTPUT_VARIABLE} ${TRIPLET} PARENT_SCOPE) endfunction()