Es imposible hacer esto con CMake.
CMake sólo mantiene un conjunto de propiedades del compilador que es compartida por todos los objetivos en un archivo CMakeLists.txt. Si desea utilizar dos compiladores, debe ejecutar CMake dos veces. Esto es cierto incluso para, por ejemplo, construyendo binarios de 32 bits y 64 bits desde la misma cadena de herramientas del compilador.
La forma más rápida y sucia-en torno a esto es usar comandos personalizados. Pero luego terminas con lo que son guiones de shell básicamente glorificados, que probablemente no sea lo que quieres.
La solución limpia es: No los puso en el mismo CMakeLists.txt! No puede vincular entre diferentes arquitecturas de todos modos, por lo que no es necesario que estén en el mismo archivo. Puede reducir las redundancias refaccionando partes comunes de las secuencias de comandos CMake en archivos separados y include()
.
La principal desventaja aquí es que pierde la capacidad de compilación con un solo comando, pero puede resolverlo escribiendo un contenedor en su lenguaje de scripting favorito que se encarga de llamar a los diferentes archivos CMake-makefiles.
parece que add_directory (other_build_kind_folder) es una posibilidad, así, en lugar de hacer una envoltura personalizada, ya que eso es lo que he estado haciendo y parece que funciona. :-) – cdleary
@cdleary ¿Podría aclarar cómo funciona? ¿Cómo te permite 'add_subdirectory' (o realmente quisiste decir' add_directory'?) Cambiar las toolchains? –
Guau, este es realmente un diseño realmente malo ... –