La tua comprensione di CMake è corretta... determinerà come creare il sistema di compilazione che richiedi (o è predefinito per la piattaforma su cui ti trovi attualmente) in base alle regole nel tuo CMakeLists.txt
file. Tuttavia, questo non ti aiuterà necessariamente a compilare per Linux su un computer Windows se non hai installato qualcosa che possa indirizzare Linux.
Per compilare il targeting Linux, dovrai utilizzare un compilatore Linux. Il link pubblicato da @stjin ti dice come installarne uno su cygwin. Quindi, per configurare la build di CMake, esegui questa operazione nel terminale:
CC=gcc-linux CXX=g++-linux cmake . [options]
Questo dirà a CMake di individuare gli speciali compilatori destinati a Linux. Se tutto va bene, dopo aver compilato con questi compilatori sarai in grado di girare su Linux.
Ti consigliamo di guardare qui:cmake-toolchains(7) se esegui la compilazione incrociata. Tuttavia, suggerirei di installare una macchina virtuale Linux come una scatola virtuale sul tuo computer Windows e di creare ingenuamente su Linux. Si compilerà molto più velocemente e non dovrai preoccuparti della compilazione incrociata. Puoi montare il disco Windows dalla VM Linux in modo da poter condividere lo stesso albero dei sorgenti. La macchina virtuale Linux verrà compilata molto più velocemente di gcc in esecuzione su Windows.