Makefileの中で、ifeq,ifne,ifdef等を使って、処理を制御しようとしています。
ドキュメント等を見る限り、それらの命令が実装されているようなのですが
なぜか、ifeq等をMakefile中に書くと、ifeqの実行ファイルを探しにいって
最終的にはエラーしてしまいます。
(とりあえず、こんな感じで試してます)
--------------------------------
#Makefile
test:
ifeq 1
@echo true
endif
---------------------------------
色々試してみたんですが、うまく行きません、何方か情報お持ちの方よろしくお願い
します。
>> Makefileの中で、ifeq,ifne,ifdef等を使って、処理を制御しようとしています。
>> ドキュメント等を見る限り、それらの命令が実装されているようなのですが
>> なぜか、ifeq等をMakefile中に書くと、ifeqの実行ファイルを探しにいって
>> 最終的にはエラーしてしまいます。
>>
>> (とりあえず、こんな感じで試してます)
>> --------------------------------
>> #Makefile
>>
>> test:
>> ifeq 1
>> @echo true
>> endif
>> ---------------------------------
GNU makeのinfoは読みましたか?
`ifeq'を実行ファイルとして探しに行くのは、先頭にTABを入れているからでしょう。
あと、ifeqの引数はそれでいいのですか? つまり意図されたことは、
test:
@if [ TheCondition ]; then echo true; fi
ということとは違うのでしょうか?
--
yone
> Makefileの中で、ifeq,ifne,ifdef等を使って、処理を制御しようとしています。
> ドキュメント等を見る限り、それらの命令が実装されているようなのですが
> なぜか、ifeq等をMakefile中に書くと、ifeqの実行ファイルを探しにいって
> 最終的にはエラーしてしまいます。
>
> (とりあえず、こんな感じで試してます)
> --------------------------------
> #Makefile
>
> test:
> ifeq 1
> @echo true
> endif
> ---------------------------------
ちゃんとは知しりませんが,ターゲットルールの中には書
けないのでは?
少なくとも,下のような記述は OK です.
---------------
FLAG = ON
ifeq "$(FLAG)" "ON"
MSG := yes
else
MSG :=
endif
all:
@echo $(MSG)
---------------
----
Hisao Aoyama 青山 尚夫
ASTEC, Inc. (株)アステック
aoy...@astec.co.jp
yoneさんコメント
>GNU makeのinfoは読みましたか?
何回もみたのですが、恥ずかしながら、先頭の空白には気づきませんでした。
>test:
>@if [ TheCondition ]; then echo true; fi
この場合シェルで動く処理になるのですよね
Makeの中だけ処理を振り分けたかったので、このような方法とりました。
青山 尚夫さんのコメント
>ちゃんとは知しりませんが,ターゲットルールの中には書
>けないのでは?
確かにそうですね、一応意図した結果は出ているのですが
たまたまうまく動いているだけかもしれません
要調査って感じですね、また調べてみます。
情報ありがとうございました。