No, it’s not possible unless the compiler supports generating both with a single command (like clang with macOS universal binaries). CMake has deeply-rooted assumptions about how many targets for each language exist (that is, 1). For example, things like CMAKE_SYSTEM_PROCESSOR are single-valued and not actually all that useful in a build targeting said universal binaries.
ExternalProject should work. There have been similar questions asked here about it before, but I don’t have the time right now to find them. I’ll try and circle back later though if you don’t have any luck.
Targeting multiple architectures, or to paraphrase using multiple toolchains in a single project is a shortcoming of CMake. ExternalProject works because it externalizes the build to separate configurations, thus allowing to pick multiple toolchains. This solution works well enough for automation scenarios, but it does trip a lot of tooling, one will lose CTest integration in IDEs, display of target names and automatic discoverability for debugging…