Filtre as opções de linha de comando antes de passar para um programa

0

Estou executando cmake e está passando um sinalizador para meu vinculador que não é reconhecido ( -rdynamic ) e está causando um erro.
Eu não consigo descobrir de onde ele está pegando essa bandeira, então eu quero apenas filtrá-la.

Eu posso especificar -DCMAKE_LINKER=<linker> , então o que eu gostaria de fazer é definir <linker> para um programa que leia seus argumentos de linha de comando, filtre o mau, e então passe o resultado de volta para o linker real. / p>

Eu tenho usado awk '{gsub("-rdynamic", "");print}' , mas não sei fazer a entrada stdin e a saída ld.

    
por RJTK 05.10.2018 / 17:48

1 resposta

1

Esse script bash faz um loop por meio de seus argumentos, ignorando aqueles que correspondem à string " -rdynamic " e adicionando quaisquer outros a uma matriz. Depois de esgotar os argumentos, ele executa ld com a lista filtrada.

#!/bin/bash

declare -a finalopts
finalopts=()

for o in "$@"; do
    if [ "$o" = "-rdynamic" ] ; then
        continue
    fi
    #add all other options to the list
    finalopts+=("$o")
done

exec ld "${finalopts[@]}"
    
por 05.10.2018 / 19:04

Tags