web-dev-qa-db-fra.com

Makefile: contient une chaîne

Une variable renvoie MINGW32_NT-5.1 ou CYGWIN_NT-5.1. (oui, point à la fin)

Besoin de comparer le fait que var donné contient NT-5.1 positionné n'importe où.

Utiliser cygwin et aimerait être compatible avec à peu près n'importe quel * nix.

61
Pablo

La fonction findstring est ce que votre cœur désire:

$(findstring trouver , dans )

Recherche dans une occurrence de find . Si cela se produit, la valeur est find ; sinon, la valeur est vide. Vous pouvez utiliser cette fonction au conditionnel pour tester la présence d'une sous-chaîne spécifique dans une chaîne donnée. Ainsi, les deux exemples,

$(findstring a,a b c)
$(findstring a,b c)

produire les valeurs "a" et "" (la chaîne vide), respectivement. Voir Testing Flags , pour une application pratique de findstring.

Quelque chose comme:

ifneq (,$(findstring NT-5.1,$(VARIABLE)))
    # Found
else
    # Not found
endif
101
John Kugelman
VARIABLE=NT-5.1_Can_be_any_string
ifeq ($(findstring NT-5.1,$(VARIABLE)),NT-5.1)
    # Found
    RESULT=found
else
    # Not found
    RESULT=notfound
endif

all:
    @echo "RESULT=${RESULT} , output=$(findstring NT-5.1,$(VARIABLE))"

Il correspond à la chaîne donnée et renvoie

17
vimjet