Ответ 1
Это невозможно сделать с помощью CMake.
CMake сохраняет только один набор свойств компилятора, который совместно используется всеми объектами в файле CMakeLists.txt. Если вы хотите использовать два компилятора, вам нужно запустить CMake дважды. Это даже верно для, например, построение 32-битных и 64-битных двоичных файлов из одной и той же инструментальной цепочки компилятора.
Быстрый и грязный способ использования пользовательских команд. Но тогда вы получаете то, что в основном прославленные shell-скрипты, что, вероятно, не то, что вы хотите.
Чистым решением является: Не помещайте их в тот же CMakeLists.txt! В любом случае вы не можете связывать между различными архитектурами, поэтому им не нужно находиться в одном файле. Вы можете уменьшить избыточность, реорганизовывая общие части сценариев CMake в отдельные файлы и include()
их.
Основным недостатком здесь является то, что вы теряете возможность создавать с помощью одной команды, но вы можете решить это, написав обертку на своем любимом языке сценариев, который заботится о вызове различных файлов make файлов CMake.