Como remover o espaço em branco à direita na variável CMake?

Estamos tentando melhorar os makefiles produzidos pelo CMake. Para Clang, GCC e ICC, queremos adicionar-march=native. O bloco para fazer isso se parece com:

# -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()

As instruções de mensagens mostram a string da máquina deuname tem uma nova linha à direita:

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

O bloco para produzirUNAME_MACHINE é:

# 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)

Como retiro a nova linha à direita deUNAME_MACHINE no CMake?

Ou devo mudar para uma regexmatches, que não deve ser afetado pela nova linha?

Ou devo fazer outra coisa?

Estamos tentando oferecer suporte ao CMake 2.8 através do Current. Isso nos leva de volta ao Ubuntu 12.04 LTS. Existem outros sistemas operacionais nessa época que levam as coisas um pouco mais longe. Enquantostring(STRIP <string> <output variable>) parece promissor,O CMake não fornece informações sobre a versão com sua documentação, por isso não temos certeza se ele atenderá aos requisitos.

EDITAR parece que a remoção não funciona no 3.0.2, então parece que precisamos de outra coisa.

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

Resultados a seguir (esperamosxx86_64x):

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

Adicionando cifrão e chaves,${UNAME_MACHINE}, resulta no mesmo problema original (a nova linha ainda está presente).

questionAnswers(4)

yourAnswerToTheQuestion