¿Cómo eliminar los espacios en blanco finales en la variable CMake?

Estamos tratando de mejorar los makefiles producidos por CMake. Para Clang, GCC e ICC, queremos agregar-march=native. El bloque para hacerlo se ve así:

# -march=native for GCC, Clang and ICC on i386, i486, i586, i686 and x86_64.
message(STATUS, "1")
message(STATUS, "Compiler: x${CMAKE_CXX_COMPILER_ID}x")
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
    message(STATUS, "2")
    message(STATUS, "Machine: x${UNAME_MACHINE}x")
    if (("${UNAME_MACHINE}" MATCHES "i.86") OR ("${UNAME_MACHINE}" STREQUAL "x86_64"))
            message(STATUS, "3")
        if (CMAKE_VERSION VERSION_LESS 2.8.12)
            add_definitions(-march=native)
        else()
            add_compile_options(-march=native)
        endif()
    endif()
endif()

Las declaraciones de mensajes muestran la cadena de máquina deuname tiene una nueva línea final:

STATUS,1
STATUS,Compiler: xGNUx
STATUS,2
STATUS,Machine: xx86_64
x

El bloque para producirUNAME_MACHINE es:

# We need the output 'uname -m' for Unix and Linux platform detection
#    Be prepared for i386-i686, amd64, x86_64, arm, arm64, armel, armhf,
#    mips, mips64, aarch32 and aarch64 (for starters)
set (UNAME_CMD "uname")
set (UNAME_ARG "-m")
execute_process(COMMAND ${UNAME_CMD} ${UNAME_ARG}
    WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
    RESULT_VARIABLE UNAME_RESULT
    OUTPUT_VARIABLE UNAME_MACHINE)

¿Cómo quito la nueva línea final deUNAME_MACHINE en CMake?

¿O debería cambiar a una expresión regular?matches, que no debería verse afectado por la nueva línea?

¿O debería hacer algo más?

Estamos intentando admitir CMake 2.8 a través de Current. Eso nos lleva aproximadamente a Ubuntu 12.04 LTS. Hay otros sistemas operativos en ese momento que retrasan un poco más las cosas. Mientrasstring(STRIP <string> <output variable>) parece prometedor,CMake no proporciona información de versión con su documentación, por lo que no estamos seguros de si cumplirá con los requisitos.

EDITAR parece que la eliminación no funciona en 3.0.2, por lo que parece que necesitamos algo más.

# Strip lead and trailing whitepasce
string(STRIP UNAME_MACHINE, UNAME_MACHINE)

Resultados en lo siguiente (esperamosxx86_64x):

STATUS,1
STATUS,Compiler: xGNUx
STATUS,2
STATUS,Machine: xUNAME_MACHINE,x

Agregar signo de dólar y llaves,${UNAME_MACHINE}, da como resultado el mismo problema original (la nueva línea todavía está presente).

Respuestas a la pregunta(4)

Su respuesta a la pregunta