Pracuję nad oprogramowaniem w C++ na Windowsie 32-bitowym (przy użyciu MSVC++), ale ponieważ chcę mieć możliwość korzystania z mojego oprogramowania na każdej platformie, postanowiłem użyć CMake jako mój generator budowania.Wieloplatformowa kompilacja pod Windows skierowana do Linuksa przy użyciu CMake
Dlatego nadal jestem dopiero początkującym użytkownikiem CMake. Z samouczków CMake rozumiem, że aby przekroczyć kody kompilacji, najpierw należy zainstalować platformę narzędziową symulującą platformę docelową na platformie hosta. Następnie za pomocą odpowiednich kompilatorów C i C++ na platformie docelowej dostarczonych przez to narzędzie, program CMake będzie w stanie generować pliki makefile itp.
Teraz chcę zbudować mój kod dla platformy Linux (GNU/Linux) na platformie Win32. Próbowałem wykonać powyższą procedurę używając CMake połączonego z Cygwin i używając gcc i g ++ jako kompilatorów. Zbudował dobrze, stworzył pliki makefile, a kiedy wydałem "make" w terminalu Cygwin, wygenerowane pliki makefile zostały "wykonane". Teraz mam plik wykonywalny, który, mam nadzieję, działał na platformie Linux. Ale na Linuksie pojawia się błąd: bash nie może wykonać pliku binarnego.
Używając pliku komendy nazwa_programu, zdałem sobie sprawę, że plik wykonywalny wykonywany przez powyższą procedurę jest typu PE32, który jest tylko dla systemu Windows.
Teraz moje pytanie brzmi: czy moje rozumienie procedury budowania wielu platform przy użyciu cmake jest poprawne? A może powinienem użyć innego zestawu narzędzi Linux pod Windowsem, aby uzyskać plik wykonywalny Linux ELF? Jakie narzędzia przychodzą ci na myśl, które dadzą mi to, czego chcę?
Dziękujemy
Setareh
Nie wiem o cmake, ale qmake ma "profile kompilacji" dla różnych platform. Być może powinieneś wyszukać opcję "docelowej platformy" w dokumentach cmake lub coś w tym stylu. –
http://metamod-p.sourceforge.net/cross-compiling.on.windows.for.linux.html – stijn
[Przykładowa lista mkspecs dla qmake na moim komputerze] (http://pastebin.com/raw.php ? i = 3mMjgC9p) –