2016-04-04 6 views
2

Beispiel:Ist es möglich, zwei verschiedene ausführbare Dateien mit zwei verschiedenen gcc-Versionen mit einem make-Befehl in C++ zu kompilieren?

Ziel 1: abc

make abc GCC_VERSION=4.3.3 

Target 2: def wollen

make def GCC_VERSION=4.5.0 

ich dies in einzelnen Befehl kompilieren. Ist es möglich?

Etwas wie:

Ziel 3: Finale (die enthalten sowohl def und abc Ziel)

make final GCC_VERSION=4.3.3 GCC_VERSION=4.5.0 

Ist es richtig, oder ist es eine Möglichkeit, es zu kompilieren?

+2

Wenn Sie das Makefile schreiben können Sie tun, was Sie wollen, aber mit verschiedenen vars (zB GCC_VERSION_1, GCC_VERSION_2) – daouzli

+0

Beachten Sie, dass manchmal eine Version von GCC ABI Änderungen einführen wird - wie Ausrichtung oder welche Arten von Argumenten übergeben (die) registriert, obwohl es manchmal möglich ist, Versionen zu mischen, ist es nicht allgemein möglich, irgendeine Version mit irgendeiner anderen Version zu mischen. (Verschiedene CPU-Architekturen haben verschiedene Versionen, die "Vorwärts-/Rückwärtskompatibilität" ermöglichen. –

+0

@MatsPetersson: Ich denke, GCC versucht sehr, diesen Anwendungsfall zu unterstützen, zumindest innerhalb der Hauptversion. Es gab jedoch einen großen ABI-Bruch bei 5.1. –

Antwort

3

Sie können eine Regel machen, die zwei Abhängigkeiten müssen, dass Ihre Binärdateien zu kompilieren:

all: abc def 

abc: 
    gcc-4.5 my_file.c 

def: 
    gcc-4.3 my_file2.c 

$> make kompiliert all standardmäßig und so Ihre 2 binaires mit verschiedenen gcc Version generiert.

+2

Aber Vorsicht, wenn Sie 'common.c' haben, das von beiden Programmen benötigt wird, müssen Sie es mit beiden Compilern kompilieren. –

Verwandte Themen