GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Einzeilige Bedingungsüberprüfung im Makefile?

Ich versuche so etwas zu erreichen:
Wenn der Benutzer make build_x version=1.0 ausführt zeigen Sie dann Building version 1.0 , sonst (make build_x ohne version param) show Building version latest . Aber was ist hier der Schlüssel – ich muss Version - sein als Standardwert (um es richtig mit git verwenden zu können ). Deshalb verwende ich die zusätzliche Variable version_info zum Ersetzen von - mit latest .

Mein Code sieht also so aus:

build_x:
    $(eval version ?= -)        
    $(eval version_info = ${if ["${version}" == "-"], "latest", "${version}"})

    ${INFO} "Doing checkout according to version $(version_info)..."

Ich weiß, dass wahrscheinlich ein Problem mit dieser Bedingung für if besteht .

Irgendwelche Ideen?

Akzeptierte Antwort:

Das funktioniert bei mir:

version ?= -
ifeq (-,$(version))
  version_info = latest
else
  version_info = $(version)
endif

build_x:
    @echo version_info = $(version_info)

Es setzt version zu - wenn nicht gesetzt, dann version_info ausfüllen angemessen.

Verwendung von zielspezifischen Variablen und einer Einzeiler-Variante:

build_x: version ?= -
build_x: version_info = $(if $(version:-=),$(version),latest)
build_x:
    @echo version_info = $(version_info)

Dies funktioniert wie folgt (siehe die gesamte GNU Make-Dokumentation):

  • version ?= - setzt version zu - falls es noch nicht eingestellt ist
  • if überprüft sein erstes Argument, wertet es aus, um zu sehen, ob es leer ist oder nicht, und wird durch das zweite Argument ersetzt, wenn das erste nicht leer ist, und durch das dritte Argument, wenn es leer ist
  • $(version:-=) wertet version aus , wobei - ersetzt wird mit dem leeren String (: führt die Ersetzung ein, der Suchschlüssel ist der Text vor = , die Ersetzung ist der Text nach = )

Linux
  1. So überprüfen Sie die Redhat-Version

  2. Überprüfen Sie die verwendete Version von Wordpress

  3. So überprüfen Sie die CentOS-Version

  4. So überprüfen Sie die Ubuntu-Version über die Befehlszeile

  5. Einzeilige if/else-Bedingung im Linux-Shell-Scripting

So überprüfen Sie die Ubuntu-Version über die Befehlszeile

3 Möglichkeiten zum Überprüfen der Linux-Kernel-Version in der Befehlszeile

So überprüfen Sie die Betriebssystemversion mit der Linux-Befehlszeile

Wie überprüfe ich die OpenGL-Version?

4 Möglichkeiten zum Überprüfen der CentOS-Version in der Linux-Befehlszeile

Wie überprüfe ich die Version des XFS-Dateisystems?