GNU/Linux >> Linux Esercitazione >  >> Linux

Condizione di una riga Check-in Makefile?

Sto cercando di ottenere qualcosa del genere:
Se l'utente eseguirà make build_x version=1.0 quindi mostra Building version 1.0 , altrimenti (make build_x senza version param) mostra Building version latest . Ma qual è la chiave qui? Ho bisogno che la versione sia - di default (per poterlo usare correttamente con git ). Questo è il motivo per cui utilizzo la variabile aggiuntiva version_info per la sostituzione di - con latest .

Quindi il mio codice è simile a questo:

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

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

So che probabilmente il problema è con questa condizione data a if .

Qualche idea?

Risposta accettata:

Questo funziona per me:

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

build_x:
    @echo version_info = $(version_info)

Imposta version a - se non è impostato, compila version_info in modo appropriato.

Utilizzando variabili specifiche del target e una variante one-liner:

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

Funziona come segue (vedi la documentazione generale di GNU Make):

  • version ?= - imposta version a - se non è già impostato
  • if controlla il suo primo argomento, lo valuta per vedere se è vuoto o meno e viene sostituito con il secondo argomento se il primo non è vuoto e il terzo se lo è
  • $(version:-=) valuta version , sostituendo - con la stringa vuota (: introduce la sostituzione, la chiave di ricerca è il testo prima di = , la sostituzione è il testo dopo = )

Linux
  1. Come controllare la versione di Redhat

  2. Controlla la versione di Wordpress in uso

  3. Come controllare la versione di CentOS

  4. Come controllare la versione di Ubuntu dalla riga di comando

  5. Condizione if/else di una riga nello scripting della shell linux

Come controllare la versione di Ubuntu usando la riga di comando

3 modi per controllare la versione del kernel Linux nella riga di comando

Come controllare la versione del sistema operativo con la riga di comando di Linux

Come controllare la versione OpenGL?

4 modi per controllare la versione di CentOS nella riga di comando di Linux

Come controllare la versione del filesystem XFS?