Most parts of our application are built using CMake because they are cross-platform. Now, I know I can set CMAKE_OSX_ARCHITECTURES to build a a fat binary, and it works fine for our smaller, self-contained components. However, some components use optimized third-party libraries that are architecture specific. There's really two cases here:
The library interface is standard (e.g., BLAS) and we're just using a different library to provide the implementation.
Our own code path depends on the library, in which case we pass in a define (using target_compile_definitions) know which code to use.