GNU Make > 条件分岐(if)
Makefileの中で、条件分岐をしたいときは、if文を使う。
まず、変数が定義済みかどうかで条件分岐したい場合は、ifdefを使う。
サンプルは以下。(インデントはタブです。)
ifeqを用いる。等しくないかどうかを確認したい場合は
ifnreqを用いる。
などの使い道が考えられる。
まず、変数が定義済みかどうかで条件分岐したい場合は、ifdefを使う。
サンプルは以下。(インデントはタブです。)
$ cat Makefile文字列が等しいかどうかを確認したい場合は、
.PHONY: all
ECHO = /bin/echo
all:
ifdef ECHO
echo 'ifdef ECHO == true'
endif
ifdef FOO
echo 'ifdef FOO == true'
else
echo 'ifdef FOO == false'
endif
$ make
echo 'ifdef ECHO == true'
ifdef ECHO == true
echo 'ifdef FOO == false'
ifdef FOO == false
ifeqを用いる。等しくないかどうかを確認したい場合は
ifnreqを用いる。
$ cat MakefileOSやCPUの種類によって、if文を使い、makeの挙動をわける、
.PHONY: all
ECHO = /bin/echo
all:
# 文字列として一致するか
ifeq ($(ECHO),/bin/echo)
echo 'ifeq ECHO == /bin/echo'
else
echo 'ifeq ECHO != /bin/echo'
endif
# 空白文字列が混入しやすいので
# 以下のように書くと堅牢
ifeq "$(ECHO)" "/bin/echo"
echo 'ifeq ECHO == /bin/echo'
endif
satoshi@debian:~/git/sample-codes/gnu_make_if$ make
echo 'ifeq ECHO == /bin/echo'
ifeq ECHO == /bin/echo
echo 'ifeq ECHO == /bin/echo'
ifeq ECHO == /bin/echo
などの使い道が考えられる。