È impossibile farlo con CMake.
CMake conserva solo un set di proprietà del compilatore condiviso da tutte le destinazioni in un file CMakeLists.txt. Se si desidera utilizzare due compilatori, è necessario eseguire CMake due volte. Questo è vero anche per es. costruire binari a 32 bit e 64 bit dalla stessa toolchain del compilatore.
Il modo più semplice e intuitivo è utilizzare comandi personalizzati. Ma poi finisci con quelli che sono fondamentalmente glorificati script di shell, che probabilmente non è quello che vuoi.
La soluzione pulita è: non inserirli nello stesso CMakeLists.txt! Non è comunque possibile collegare tra diverse architetture, quindi non è necessario che si trovino nello stesso file. È possibile ridurre le ridondanze rielaborando parti comuni degli script di CMake in file separati e include()
.
Lo svantaggio principale qui è che si perde la possibilità di creare con un singolo comando, ma è possibile risolverlo scrivendo un wrapper nel proprio linguaggio di scripting preferito che si occupa di chiamare i diversi makefile CMake.
Sembra che add_directory (altra_build_kind_folder) sia una possibilità, al contrario di creare un wrapper personalizzato, poiché è quello che ho fatto e sembra funzionare. :-) – cdleary
@cdleary Potresti chiarire come funziona? In che modo 'add_subdirectory' (o intendevi veramente add_directory'?) Ti permette di cambiare toolchain? –
Wow, questo è davvero un pessimo design ... –