my_test:
ifdef $(toto)
@echo 'toto is defined'
else
@echo 'no toto around'
endif
$ make my_test
no toto around
$ make my_test toto
toto is defined
$ make my_test
no toto around
$ make my_test toto
no toto around
make: *** No rule to make target `toto'. Stop.
make my_test
を実行すると、予想どおりno toto around
のelseテキストが表示されます。しかしながら
make my_test toto
no toto around
make: *** No rule to make target `toto'. Stop.
Makefileバージョン
$ make -v
GNU Make 3.81
SLEバージョン
$ cat /etc/*release
VERSION_ID="11.4"
PRETTY_NAME="SUSE Linux Enterprise Server 11 SP4"
ポイントは、toto
を指定するとmake my_test
を冗長にし、toto
を指定しないと、コマンドはサイレントで実行されます。
Totoの周りのドルを削除し、コマンドラインからtotoを別の方法で渡す必要があります
コマンドライン
make toto=1 my_test
メイクファイル
my_test:
ifdef toto
@echo 'toto is defined'
else
@echo 'no toto around'
endif