Sto sviluppando un software in C++ su Windows 32-bit (usando MSVC++), ma poiché voglio poter usare il mio software su ogni piattaforma, ho deciso di usare CMake come il mio generatore di build.Creazione multipiattaforma sotto Windows targeting per Linux usando CMake
Pertanto, sono ancora solo un principiante in CMake. Dai tutorial di CMake, comprendo che per poter incrociare i codici di compilazione, in primo luogo sulla piattaforma host deve essere installata una toolchain che simula la piattaforma di destinazione. Quindi utilizzando i compilatori C e C++ della piattaforma di destinazione forniti da questa toolchain, CMake sarebbe in grado di generare makefile ecc.
Ora, voglio creare il mio codice per la piattaforma Linux (GNU/Linux) su una piattaforma Win32. Ho provato a fare la procedura sopra usando CMake combinato con Cygwin e usando gcc e g ++ come compilatori. Ha creato dei makefile fini e creati e quando ho creato "make" nel terminale Cygwin, i makefile generati sono stati "fatti". Ora ho un eseguibile che speravo potesse girare sulla piattaforma Linux. Ma su Linux ottengo l'errore: bash non può eseguire file binari.
Utilizzando il file di comando executablename, mi sono reso conto che l'eseguibile creato dalla procedura precedente è di tipo PE32 che è solo per Windows.
Ora la mia domanda è: la mia comprensione della procedura di compilazione multipiattaforma usando cmake è corretta? O dovrei semplicemente usare un'altra toolchain di Linux sotto Windows per ottenere un eseguibile ELF Linux? Quali strumenti ci vengono in mente che mi darebbero quello che voglio?
Molte grazie
Setareh
Non so su cmake, ma qmake ha "profili di build" per piattaforme diverse. Forse dovresti cercare l'opzione "piattaforma di destinazione" nei documenti cmake, o qualcosa del genere. –
http://metamod-p.sourceforge.net/cross-compiling.on.windows.for.linux.html – stijn
[Esempio di elenco di mkspec per qmake sulla mia macchina] (http://pastebin.com/raw.php ? i = 3mMjgC9p) –