Ich weiß, dass Sie verwenden können, wenn Aussagen wie die folgenden in Makefiles:Conditional Ausdruck in Makefile
foo: $(objects)
ifeq ($(CC),gcc)
$(CC) -o foo $(objects) $(libs_for_gcc)
else
$(CC) -o foo $(objects) $(normal_libs)
endif
Gibt es eine Möglichkeit, einen bedingten Ersatz wie möglicherweise einen ternären Typen Betreiber zu tun.
(condition?$(CC):$(CC2)) -o foo $(objects) $(libs_for_gcc)
Und wenn es nicht das, was die meisten idiomatische Weg wäre, ist das Beispiel zu erreichen
Ich habe die C++ Tag, weil die Frage nur 7 Ansichten hatte und ich dachte, jemand, der C++ verwendet könnte wahrscheinlich die Antwort zu wissen, ich weiß, das ist nicht unbedingt eine C++ Frage ist (obwohl ich c zu kompilieren bin die Planung ++ mit ihm)
EDIT: sieht aus wie es ein, wenn die Funktion mit dieser Syntax ist
$(if condition,then-part[,else-part])
Ich bin immer noch ein wenig verwirrt, wie es funktioniert
Ich dachte, es gäbe einen Weg, um das zu erreichen, was ich wollte, wird dies beim Schreiben eines Makefiles als idiomatisch angesehen, auch ich würde upvoten, aber ich muss 42 Minuten warten, ran outa votes – aaronman
Ich denke, dass Chris tatsächlich richtig ist: diese Art von Das ist in Makefiles nur selten der Fall. Normalerweise werden andere Methoden verwendet, wie die rekursive Variablenbenennung (etwas wie 'gcc_LIBS = $ (libs_for_gcc)', dann in der Regel '$ ($ (CC) _LIBS)' oder das Einbeziehen verschiedener Makefiles zum Einrichten von Variablen für verschiedene Compiler usw. Ich würde es nicht wirklich idiomatisch nennen, aber es ist nicht unbekannt – MadScientist
ok, der einzige Grund, warum ich Chris Antwort nicht mochte, ist, weil es nichts zur Verfügung stellte, was ich nicht schon wusste. Ich habe jetzt UV war er – aaronman