makefileを作るときに動的にできるファイルを依存ファイルに含めるにはどうしたらいいでしょうか?

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
rafysta

makefileを作るときに動的にできるファイルを依存ファイルに含めるにはどうしたらいいでしょうか?

#1

投稿記事 by rafysta » 9年前

makefileの作り方について質問があります。
あるファイルの作成には、ファイルのリストが書かれたファイル(=リストファイル)と、リストファイルに書かれたファイルすべてが依存しているという表記をしたいです。
リストファイルも動的に生成されます。
以下に簡略コードを書いてみたのですが、これだと、依存ファイルを解釈する時点では、リストファイルが存在しないために「シェル関数が存在しないファイルを参照している」と言って怒られます。
依存ファイルを前から順に解釈して、先にリストファイルを作成してくれれば問題ないのですが、makeのログを見ると、まず、依存ファイルの解釈をしてエラーを吐き出した後、リストファイルの生成をしているためうまくいきません。
どうにかして、依存ファイルのリストを解釈する前に、リストファイルを生成させたいのですが、どう書けばいいのか分かりません。
上記の目的を達するための手法、もしくは、makefileで解釈の優先順位を付ける方法、もし、この質問がこの掲示板の質問として相応しくないようであれば、適切な掲示板のアドレスについてアドバイスをよろしくお願いします。

コード:

%.TARGET_FILE : %.ID_LIST $(shell cat $(shell basename $*).ID_LIST | xargs –I@ echo “@.data”) 
	Do something to make %.TARGET_FILE

%.ID_LIST :
	Do something to make %.ID_LIST

%.data : 
	Do something to make %.data

pocket
記事: 49
登録日時: 9年前

Re: makefileを作るときに動的にできるファイルを依存ファイルに含めるにはどうしたらいいでしょうか?

#2

投稿記事 by pocket » 9年前

こんにちは。

私の知識不足で内容のほとんどが理解できていないので、
見当違いなコメントになるかもしれません。

なので、参考程度に見て頂ければと思います。

特定の変数(今回はCPPS)にソースコードの名前をすべて代入して、使えばいいのではないでしょうか。
makefileの正確な書式を忘れましたので、雰囲気で書きます。

コード:

CPPS := $(shell find  . -name '*.cpp')
TARGET:$(CPPS)
    g++ $(CPPS) -Wall
このような感じに書けば、特定のディレクトリ内のすべてのソースコードを含めたコンパイルができたはずです。
問題解決の一助になれば幸いです。

閉鎖

“C言語何でも質問掲示板” へ戻る