Una variable devuelve MINGW32_NT-5.1 o CYGWIN_NT-5.1. (sí, punto final)

Necesidad de comparar que dado var contiene NT-5.1 colocar en cualquier lugar.

Usando cygwin y quisiera ser compatible con casi cualquier *nix.

InformationsquelleAutor Pablo | 2010-04-30

2 Comentarios

  1. 106

    La findstring función es lo que su corazón desea:

    $(findstring encontrar,en)

    Búsquedas en para una aparición de encontrar. Si esto ocurre, el valor es encontrar; de lo contrario, el valor está vacío. Usted puede utilizar esta función en una condicional para la prueba de la presencia de un determinado subcadena en una cadena dada. Por lo tanto, los dos ejemplos,

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

    producir los valores "a" y "" (cadena vacía), respectivamente. Ver Pruebas De Banderas, para una aplicación práctica de findstring.

    Algo como:

    ifneq (,$(findstring NT-5.1,$(VARIABLE)))
        # Found
    else
        # Not found
    endif
    
    • Genial, exactamente lo que yo quiero. Sólo una pregunta – ¿qué es el coma aquí para ifneq (,$(...
    • Analizar como ifneq(A,B) donde a es la cadena vacía y B es $(findstring...). Parece extraño, porque no cita las cadenas en los Makefiles.
    • Es findstring sensible a mayúsculas y minúsculas? Si es así, ¿hay una manera sencilla de hacerlo en mayúsculas o en minúsculas coincidencia? El manual no estaba clara…
    • Sí, make funciones son invariablemente casosensible. Lamentablemente, no hay mayúsculas y minúsculas variantes, pero como solución podría utilizar el $(shell ...) función para utilizar un comando de shell para el caso de la conversión de torpe, pero funciona; por ejemplo: $(findstring $(shell echo 'BC' | tr '[:upper:]' '[:lower:]'), 'abcd'). Si no te importa especificando SHELL := bash tener make usar bash como shell, usted puede tomar ventaja de shopt -s nocasematch y realizar todo comparaciones a mayúsculas-minúsculas dentro de un solo $(shell ...) llamada.
  2. 18
    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))"
    

    Coincide con la cadena de caracteres y devuelve

    • Esto funciona y se lee mejor que el aceptado la respuesta, de la OMI.
    • Se puede ser más legible, pero usted está repitiendo «NT 5.1»

Dejar respuesta

Please enter your comment!
Please enter your name here