GNU/Linux >> Tutoriels Linux >  >> Linux

Vérification des conditions d'une ligne dans le fichier Makefile ?

J'essaie d'obtenir quelque chose comme ceci :
Si l'utilisateur exécute make build_x version=1.0 puis affichez Building version 1.0 , sinon (make build_x sans version param) show Building version latest . Mais quelle est la clé ici - j'ai besoin de la version - par défaut (pour pouvoir l'utiliser correctement avec git ). C'est pourquoi j'utilise la variable supplémentaire version_info pour remplacer - avec latest .

Donc mon code ressemble à ceci :

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

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

Je sais que le problème est probablement avec cette condition donnée à if .

Des idées ?

Réponse acceptée :

Cela fonctionne pour moi :

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

build_x:
    @echo version_info = $(version_info)

Il définit version à - si non défini, alors remplit version_info de manière appropriée.

Utilisation de variables spécifiques à la cible et d'une variante à une ligne :

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

Cela fonctionne comme suit (voir la documentation générale de GNU Make) :

  • version ?= - définit version à - s'il n'est pas déjà défini
  • if vérifie son premier argument, l'évalue pour voir s'il est vide ou non, et est remplacé par le deuxième argument si le premier n'est pas vide, et le troisième s'il l'est
  • $(version:-=) évalue version , remplaçant - avec la chaîne vide (: introduit le remplacement, la clé de recherche est le texte avant = , le remplacement est le texte après = )

Linux
  1. Comment vérifier la version de Redhat

  2. Vérifier la version de Wordpress utilisée

  3. Comment vérifier la version de CentOS

  4. Comment vérifier la version d'Ubuntu à partir de la ligne de commande

  5. Condition if/else sur une ligne dans les scripts shell linux

Comment vérifier la version d'Ubuntu à l'aide de la ligne de commande

3 façons de vérifier la version du noyau Linux en ligne de commande

Comment vérifier la version du système d'exploitation avec la ligne de commande Linux

Comment vérifier la version d'OpenGL ?

4 façons de vérifier la version de CentOS dans la ligne de commande Linux

Comment vérifier la version du système de fichiers XFS ?