Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

GNU Makeのifeq,ifdefなどの命令

1,095 views
Skip to first unread message

shimiken

unread,
Sep 30, 1998, 3:00:00 AM9/30/98
to
はじめまして、清水 健一といいます、こちらには初めて書き込みです。
さて、GNU Makeのifeq,ifdefなどの、制御系の命令について質問させてください。

Makefileの中で、ifeq,ifne,ifdef等を使って、処理を制御しようとしています。
ドキュメント等を見る限り、それらの命令が実装されているようなのですが
なぜか、ifeq等をMakefile中に書くと、ifeqの実行ファイルを探しにいって
最終的にはエラーしてしまいます。

(とりあえず、こんな感じで試してます)
--------------------------------
#Makefile

test:
ifeq 1
@echo true
endif
---------------------------------

色々試してみたんですが、うまく行きません、何方か情報お持ちの方よろしくお願い
します。

po...@super.win.or.jp
清水 健一

yone

unread,
Sep 30, 1998, 3:00:00 AM9/30/98
to
<6usr47$j73$1...@news1.kcom.ne.jp>の記事において
shim...@ma.kcom.ne.jpさんは書きました。

>> 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

Hisao Aoyama

unread,
Sep 30, 1998, 3:00:00 AM9/30/98
to
"shimiken" <shim...@ma.kcom.ne.jp> writes:

> 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

shimiken

unread,
Oct 1, 1998, 3:00:00 AM10/1/98
to
yoneさん、青山 尚夫さん、情報ありがとうございます。
いやー、お恥ずかしい、先頭に空白入れてたからだったんですねー
丸一日悩んじゃいました。

yoneさんコメント
>GNU makeのinfoは読みましたか?
何回もみたのですが、恥ずかしながら、先頭の空白には気づきませんでした。

>test:


>@if [ TheCondition ]; then echo true; fi

この場合シェルで動く処理になるのですよね
Makeの中だけ処理を振り分けたかったので、このような方法とりました。

青山 尚夫さんのコメント
>ちゃんとは知しりませんが,ターゲットルールの中には書
>けないのでは?
確かにそうですね、一応意図した結果は出ているのですが
たまたまうまく動いているだけかもしれません
要調査って感じですね、また調べてみます。

情報ありがとうございました。


po...@super.win.or.jp
清水 健一

0 new messages