匿名 | ログイン | 新しいユーザーの作成 | 2024-12-05 10:35 JST |
メイン | マイビュー | 検索 | 変更履歴 | ロードマップ | Vine Linux ホーム |
課題の詳細を表示 [ コメントにジャンプ ] | [ 課題の履歴 ] [ 印刷 ] | ||||||||
ID | プロジェクト | カテゴリ | 登録日 | 最終更新 | |||||
0000479 | Vine Linux | 1 バグ | 2007-02-10 13:46 | 2007-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)しておきます。 | ||||||||
タグ | 設定されていません。 | ||||||||
arch | x86 | ||||||||
パッケージ | make-3.80-0vl4 | ||||||||
添付ファイル | 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 |