C++ cross-platform compileren

C++ cross-platform compileren

Het is veel gemakkelijker om het op het doel-besturingssysteem te compileren dan om het onderling te compileren. Wat je nodig hebt is een toolchain voor elk besturingssysteem en een "make"-tool. CMake heeft krachtige crosscompiling-mogelijkheden. Dit is geen noodzaak, maar het zal wat geld besparen:koop virtualisatiesoftware (bijv. VMWare Player is gratis) en draai op een ander besturingssysteem.

Ik zou clang (OSX), gcc (Linux), TDM gcc (Windows) aanraden als toolchains (MSVC is ook leuk, maar is niet gratis). Het verschil tussen 32bit en 64bit zou niet het probleem moeten zijn. Als je met verschillende compilers werkt, raad ik je aan om je aan de standaard te houden door bij elke compiler de meest pedante compilervlaggen aan te zetten.

Ik zou je ook aanraden om ergens een continue integratieserver te hebben met één client voor elk OS-doel en elke architectuur. Dit verlicht de pijn van incompatibele wijzigingen die u in één besturingssysteem aanbrengt. En u kunt ook zorgen voor installatie door pakketbeheerder of installatieprogramma.

Zoek gewoon op internet voor meer informatie over cross-compilatie, toolchains en continue integratie.


Je hebt een bouwsysteem nodig zoals de auto-tools of CMake, en ik raad het laatste aan. Er is een Python-hulpprogramma genaamd cookiecutter waarmee je een eenvoudig CMake/C++-sjabloonproject kunt maken met Python (de BoilerplatePP sjabloon). In die link heb je de instructies over hoe je het kunt gebruiken om een ​​startend project te maken. Het initiële project zou er ongeveer zo uit moeten zien:

$ tree cpp/
cpp/
├── CMakeLists.txt
├── README.md
├── include
│   └── Calculator.hpp
├── src
│   ├── CMakeLists.txt
│   └── Calculator.cpp
├── test
│   ├── CMakeLists.txt
│   └── CalculatorTests.cpp
└── thirdparity
    └── catch
        └── include
            └── catch.hpp

CMake ondersteunt cross-compiling vanaf versie 2.6. Lees dit artikel om inzicht te krijgen in dit probleem. Veel succes.


U kunt CMake gaan gebruiken en uw project gereed maken voor compilers in alle besturingssystemen.

In sommige speciale gevallen moet u uw code aanpassen, inclusief preprocessorcontroles op welk besturingssysteem u gebruikt. Bijvoorbeeld:

#ifdef WIN32
//do some stuff for Windows
#elif __APPLE__
//do some stuff for Apple
#elif __linux__
//do stuff for Linux
#endif

Hier op deze link vindt u de lijst met alle vooraf gedefinieerde macro's.

Om alles te crosscompileren met alleen je Win7 32bit, kun je GCC cross compiler gebruiken. Tot nu toe zijn GCC of CLANG de enige compilers die beschikbaar zijn op Windows, Mac en Linux. Volg deze wiki als je je project voor andere doelen wilt bouwen in plaats van alleen Windows 32-bits

GCC