2017-09-08 13 views
0

gnuでは、使用しているgccのバージョンをテストしたいと思います。 私がチェックしているバージョンは「4」ですが、実際にはマイナーバージョンの「4」は使用できます。 したがって、gccが "4.1"または "4.3.5"であれば問題ありません。gnuを使ってテキストの先頭に文字列を見つける

私は次のことを実行する場合:

ifeq "$(findstring 4.,$(GCC_VERSION))" "4." 

....ものを行う...

それは4.1のGCC_VERSION値をtrueにテストするだろうが、それはまたのためにtrueにテストしますGCC_VERSIONの値が "2.4.3"で、私はそれを望まない。

私が知りたいのは、GCC_VERSIONの最初の2文字をテストする方法です。これらが「4」に等しい場合は、テストをパスします。

残念ながら、このようなgnuファイル/スクリプトを手動でテストする方法はわかりませんが、コードは大量のビルドシステムの一部であり、その機能は私の手にはありません。このようなスクリプトをどうやって手動でテストできるか分かっていれば、私もそれに感謝します。

答えて

0

"gnu"とは、GNU Makeを意味します。 GNUはそれ以上のものです。

GCC_VERSIONの値はどこから取得してもドットで始まらないと仮定して、GNUではドットで区切られた最初のトークンが「4」であるかどうかをテストするだけで十分です。

ifeq "$(firstword $(subst ., ,$(GCC_VERSION)))" "4" 
$(info version 4.x.y) 
else 
$(info not version 4.x.y) 
endif 

は仕事をしていません手動

+0

おかげで8.2 Functions for String Substitution and Analysis を参照してください! – didjek

関連する問題