プログラムに渡す前にコマンドラインオプションをフィルタリングします。

プログラムに渡す前にコマンドラインオプションをフィルタリングします。

これを実行しているcmakeが認識できないフラグ(-rdynamic)がリンカに渡され、エラーが発生します。
このフラグをどこから取得したのかわからないので、フィルタリングしたいと思います。

を指定できるので、コマンドライン引数を読み、誤った引数をフィルタリングしてから、結果を実際のリンカに戻すプログラムを-DCMAKE_LINKER=<linker>設定したいと思います。<linker>

私は使用していますが、awk '{gsub("-rdynamic", "");print}'stdinを入力にしてldを出力にする方法がわかりません。

答え1

スクリプトは文字列 " "と一致bashするパラメータを無視し、-rdynamic他のパラメータを配列に追加してそのパラメータを繰り返します。引数が不足すると、ldフィルタリングされたリストを使用して実行されます。

#!/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[@]}"

関連情報