[解決済み] メイクファイル ifeq 論理的または
質問
makeの論理和はどのように行うのですか?
ifeq
演算子を使ってどのように論理和をとるのでしょうか?
例:(簡略化)しています。
ifeq ($(GCC_MINOR), 4)
CFLAGS += -fno-strict-overflow
endif
ifeq ($(GCC_MINOR), 5)
CFLAGS += -fno-strict-overflow
endif
となっていますが、これらの行を一本化したいと思います。
(そうそう、autotools, configure, etc etc.; 現状では強引すぎるので、ここではすべてをMakefile内に収めたいと思います)
[この質問の論理的な反対。 ifeq'ステートメントで複数の条件を使用する方法 ]
どのように解決するのですか?
メーリングリストのアーカイブにある通りです。
- http://osdir.com/ml/gnu.make.windows/2004-03/msg00063.html
- http://osdir.com/ml/gnu.make.general/2005-10/msg00064.html
を使用することができます。
filter
という関数があります。
例えば
ifeq ($(GCC_MINOR),$(filter $(GCC_MINOR),4 5))
filter X, A B
はA,BのうちXと等しいものを返します。
上の例では関係ないが、これはXOR演算であることに注意。つまり、代わりに以下のようなものがあるとします。
ifeq (4, $(filter 4, $(VAR1) $(VAR2)))
そして、次のようにします。
make VAR1=4 VAR2=4
とすると、フィルタは
4 4
とは等しくない
4
.
代わりにOR演算を行うバリエーションは
ifneq (,$(filter $(GCC_MINOR),4 5))
ここで、空文字列との負の比較は代わりに使われます (
filter
の場合、空文字列を返します。
GCC_MINOR
が引数にマッチしない場合は空文字列を返す)。を使うと
VAR1
/
VAR2
の例では、このようになります。
ifneq (, $(filter 4, $(VAR1) $(VAR2)))
これらのメソッドの欠点は、これらの引数が常に単一の単語であることを確認しなければならないことです。例えば、もし
VAR1
は
4 foo
の場合、フィルタリングの結果はまだ
4
であり
ifneq
の式はまだ真である。もし
VAR1
は
4 5
である場合、フィルタリングの結果は
4 5
となり
ifneq
の式は真になります。
簡単な代替案としては、同じ操作を単に
ifeq
と
else ifeq
の分岐で、例えばこんな感じ。
ifeq ($(GCC_MINOR),4)
@echo Supported version
else ifeq ($(GCC_MINOR),5)
@echo Supported version
else
@echo Unsupported version
endif
関連
-
[解決済み】makefile:4。*** missing separator. 停止する
-
[解決済み】Makefileの中の.PHONYの目的は何ですか?
-
[解決済み] GNU Makefile の変数割り当て =, ?=, :=, += の違いは何ですか?
-
[解決済み] makefile の記号 $@ と $< はどういう意味ですか?
-
[解決済み] MakefileとCMakeを使ったコンパイルの違いについて
-
[解決済み] Mac OS Xの*論理*コア数を知るには?
-
[解決済み】makefileに'cd'コマンドを記述するには?
-
[解決済み】gcc makefileのエラー。"No rule to make target ..." (ターゲットにするルールがありません)
-
[解決済み】SIMPLE C++のMakefileの作り方
-
[解決済み] メイクファイル ifeq 論理的または
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン