Vine Linux バグトラッキングシステム

課題の詳細を表示 コメントにジャンプ ] 課題の履歴 ] 印刷 ]
IDプロジェクトカテゴリ登録日最終更新
0000479Vine Linux1 バグ2007-02-10 13:462007-03-09 17:00
報告者anonymous 
担当者 
優先度再現性不明 
状態完了解決状況不明 
バージョン 
修正予定バージョン修正済バージョン 
概要0000479: コマンド「make」のファイル「Makefile」上で条件的にサフィックス・ルールが無視される。
説明もはや「Vine」に関係ないかもしれませんが…
コマンド「make」のファイル「Makefile」上で条件的に
サフィックス・ルールが無視されます。

Vine 4.0/3.2 でおきます。

  パッケージ : make-3.80-0vl4

(3.2 のパッケージは忘れました。)

 Makefile に 下記のように ビルド するファイルの依存ファイルの指定に
 ディレクトリ名を書き足すとサフィックス・ルールが無視されます。
 ※ この際、エラーもワーニングも発しません。

---- 以下 Makefileの(失敗)例

.SIFFIXES: .cc .o

TARGET=test

all: main.o
        g++ -o $(TARGET) main.o

clean:
        rm *~ *.o $(TARGET)

main.o: src/main.cc
# ↑ ここにディレクトリ名の指定を書き足すとビルドされない。
# g++ -c -o $*.o $<

.cc.o:
        g++ -c -o $*.o $<

---- 以上まで。

成功例と失敗例を添付(make-test-for-bug-report.tgz)しておきます。
タグ設定されていません。
archx86
パッケージmake-3.80-0vl4
添付ファイルtgz file icon make-test-for-bug-report.tgz [^] (578 バイト) 2007-02-10 13:46

- 関連

-  コメント
(0002404)
anonymous (参照)
2007-03-01 01:27

> .SIFFIXES: .cc .o

.SIFFIXES ではなく
.SUFFIXES です。
  ^

> ※ この際、エラーもワーニングも発しません。
$ make -d
とすると確認できると思います。
サフィックス・ルールを定義する時には -r オプションも使ったほうがわかりやすいです。

> ディレクトリ名を書き足すとサフィックス・ルールが無視されます。
src/main.o: src/main.cc のように、ターゲットをコンポーネントと同じディレクトリにするとサフィックス・ルールを利用できます。

「ディレクトリ名を書き足すと」というよりは、「ターゲットとコンポーネントのディレクトリが異なると」ということのようです。仕様なのではないでしょうか?

他のディレクトリも対象としたいのであれば、VPATH や vpath を使う必要があると思います。
Vine 4.0/3.2 では確認してませんが 4.1 x86 の make-3.80-0vl4 で、VPATH や vpath が使えました。
ただ、コマンド行を省略せずに書いたほうがトラブルにはなりにくいと思います。
(0002405)
anonymous (参照)
2007-03-04 14:50

>> .SIFFIXES: .cc .o
>
> .SIFFIXES ではなく
> .SUFFIXES です。
> ^
 
すみません。誤植でした。

>> ※ この際、エラーもワーニングも発しません。
> $ make -d
> とすると確認できると思います。
> サフィックス・ルールを定義する時には -r オプションも使ったほうがわかりや
> すいです。

>> ディレクトリ名を書き足すとサフィックス・ルールが無視されます。
> src/main.o: src/main.cc のように、ターゲットをコンポーネントと同じディレ
> クトリにするとサフィックス・ルールを利用できます。
>
> 「ディレクトリ名を書き足すと」というよりは、「ターゲットとコンポーネント
> のディレクトリが異なると」ということのようです。仕様なのではないでしょう
> か?

「サフィックス・ルール」で、検索してみたのですが「VPATH」まで、
たどり着けませんでした。

  main.o: src/main.cc
          g++ -c -o $*.o $<

「Makefile」で、↑のように、ファイル1つづつたと動作するので、
困惑してしまいました。
(ルールだと、依存のパスは見ないということですね。)

> 他のディレクトリも対象としたいのであれば、VPATH や vpath を使う必要がある
> と思います。
> Vine 4.0/3.2 では確認してませんが 4.1 x86 の make-3.80-0vl4 で、VPATH や
> vpath が使えました。
> ただ、コマンド行を省略せずに書いたほうがトラブルにはなりにくいと思います。

こちらでも「VPATH」を使い動作の確認がとれました。

ですので、この件は「解決」でおねがいします。
(0002406)
kazutaka (開発者)
2007-03-09 17:00

> >> ディレクトリ名を書き足すとサフィックス・ルールが無視されます。
> > src/main.o: src/main.cc のように、ターゲットをコンポーネントと同じディレ
> > クトリにするとサフィックス・ルールを利用できます。
> >
> > 「ディレクトリ名を書き足すと」というよりは、「ターゲットとコンポーネント
> > のディレクトリが異なると」ということのようです。仕様なのではないでしょう
> > か?
>
> 「サフィックス・ルール」で、検索してみたのですが「VPATH」まで、
> たどり着けませんでした。
>
> main.o: src/main.cc
> g++ -c -o $*.o $<
>
> 「Makefile」で、↑のように、ファイル1つづつたと動作するので、
> 困惑してしまいました。
> (ルールだと、依存のパスは見ないということですね。)
>
> > 他のディレクトリも対象としたいのであれば、VPATH や vpath を使う必要がある
> > と思います。
> > Vine 4.0/3.2 では確認してませんが 4.1 x86 の make-3.80-0vl4 で、VPATH や
> > vpath が使えました。
> > ただ、コマンド行を省略せずに書いたほうがトラブルにはなりにくいと思います。
>
> こちらでも「VPATH」を使い動作の確認がとれました。
>
> ですので、この件は「解決」でおねがいします。

とのことですので、これで完了とします。

ハラダ

- 課題の履歴
変更日 ユーザー名 項目 変更内容
2007-02-10 13:46 anonymous 添付ファイル追加: make-test-for-bug-report.tgz
2007-02-10 13:46 anonymous 新規課題
2007-03-01 01:27 anonymous コメント追加: 0002404
2007-03-04 14:50 anonymous コメント追加: 0002405
2007-03-09 17:00 kazutaka 状態 新規 => 完了
2007-03-09 17:00 kazutaka コメント追加: 0002406


Copyright © 2000 - 2024 MantisBT Team
Copyright © 2012 - 2024 Project Vine
Powered by Mantis Bugtracker